- printStatement не имеет возвращаемого типа - очевидно, для него неявно установлено значение «int»?
Не в стандартном C ++. Такое заявление неверно сформировано. Но раньше так было в первом C стандарте (около 30 лет go) и в предварительном C (даже старше). Некоторые компиляторы поддерживают это как расширение языка для обратной совместимости.
Но я возвращаю логическое значение - происходит ли неявное преобразование в int?
Да. bool
неявно преобразуется в целочисленные типы.
Я сохраняю результат в char - происходит ли снова неявное преобразование из int в char?
Да. Целочисленные типы можно преобразовать в char
.
Кто мешает мне стрелять в колени при разработке C ++, потому что, очевидно, компилятору все равно.
Ваш работодатель / ведущий разработчик может потребовать, чтобы вы не использовали языковые расширения, потому что это проблема с точки зрения переносимости.
Компилятор требуется для диагностики неправильно сформированного объявления. Вот пример сообщения Diagnosti c, которое может быть выдано:
ISO C ++ запрещает объявление 'printStatement' без типа [-fpermissive]
Чтение вывод компилятора важен для предотвращения ошибок программиста на C ++. Если компилятор не выдает такого сообщения диагностики c, значит, он не соответствует стандарту C ++. Обычно это считается ошибкой в компиляторе.
PS Преобразование из int
в char
может быть потенциально опасным (в большинстве систем), потому что значение может не быть представлено в целевом типе. В вашем компиляторе есть возможность предупреждать о таких потенциально опасных преобразованиях (-Wconversion
).