Назад к вопросам
JuniorТеорияИногда
Что выведет программа?
#include <iostream>
int kind(int x) {
if (x > 0)
if (x > 10)
return 2;
else
return -1;
return 1;
}
int main() { std::cout << kind(5) << ' ' << kind(-5); }-1 1
- Ждать
1 -1, как подсказывают отступы:elseотносится к ближайшемуifбез своегоelse, то есть кif (x > 10), а отступы ничего не меняют. - Ждать ошибку компиляции: правило ближайшего
ifне оставляет неоднозначности, поэтому Clang и GCC только предупреждают и советуют поставить скобки.
- Как расставить фигурные скобки в
kind, чтобы она возвращала-1для любогоx <= 0? - Какое предупреждение компилятора сообщает о неоднозначном
elseи какое исправление оно предлагает?