Неоднократно читал в разных источниках, что согласно какого то популярного стандарта C (ANSI C или C99), условия в скобках проверяются согласно последовательности их написания.
Правильно ли я понимаю, что если компилятору указали работать в режиме ANSI C и C99, то в следующей конструкции:
while (x = getx() && x > 5)
второе условие x > 5 будет проверяться всегда после выполнения getx() и никогда, ни при какой простой оптимизации, порядок проверки этих условий не поменяется?
Где "компилятору указали работать в режиме ANSI C и C99" и "ни при какой оптимизации" означает для gcc опции "-O4 -pipe -march=somearch -fomit-frame-pointer -std=c99".
Мне очень важна кроссплатформенность, но ведь основные платформы сборки моей программы, такие как последние версии Linux, FreeBSD, HP-UX, Solaris и Cygwin имеют возможность сборки согласно C99 и по-умолчанию подразумевают код ANSI C.