Поведение вашей программы в том виде, в котором оно написано: undefined .
Не- void
функция должна иметь явное возвращаемое значение на всех путях управления.
Единственное исключение из этого - main
, которое имеет неявный return 0;
.
Достаточное количество компиляторов предупредит вас о тривиальных случаях, таких как приведенные выше.У вас недостаточно высокий уровень предупреждения?(Передайте -Wall
и -Wextra
, чтобы «увеличить» уровень предупреждения на gcc.)
Обратите внимание, что стандарт C ++ не требует компилятора для сбоя компиляции: теоретическая информатика (остановка )проблема ) говорит нам, что достижимость невозможно доказать.