Учитывая следующую программу:
#include <stdio.h>
int main(void)
{
int i = 1, j = 2;
int val = (++i > ++j) ? ++i : ++j;
printf("%d\n", val); // prints 4
return 0;
}
Инициализация val
выглядит так, как будто она может скрывать какое-то неопределенное поведение, но я не вижу какой-либо точки, в которой объект либо модифицируется более одного раза, либо модифицируется и используется без промежуточной точки. Может ли кто-нибудь исправить или подтвердить мне это?