Стандарт ANSI требует, чтобы логические операторы были закорочены в C или С++?
Я смущен, потому что я помню книгу K & R, в которой ваш код не должен зависеть от того, что эти операции являются короткими, потому что они не могут. Может ли кто-нибудь указать, где в стандарте он говорит, что логические операторы всегда закорочены? Меня больше всего интересует С++, ответ также для C будет отличным.
Я также помню, как читал (не могу вспомнить, где), что порядок оценки строго не определен, поэтому ваш код не должен зависеть или предположить, что функции внутри выражения будут выполняться в определенном порядке: к концу инструкции все ссылочные функции будут вызваны, но компилятор имеет свободу выбора наиболее эффективного порядка.
Указывает ли стандарт на порядок оценки этого выражения?
if( functionA() && functionB() && functionC() ) cout<<"Hello world";