Пример кода:Пояснение для одной строки, если поведение оператора?
int hour = 0;
bool saveData = true;
if(hour > 0) doSomeMethod(); saveData = false;
В приведенном выше коде, SaveData всегда будет установлено значение ложно, пока doSomeMethod() не будет запущено. Я понял, что компилятор обрабатывает полуколону после doSomeMethod() в качестве индикатора для перехода к следующему утверждению, игнорируя, что он находится в той же строке, что и оператор if. В чем причина такого поведения?
Вот почему всегда лучше обернуть инструкцию if в блоках кода {} – MethodMan