Недавно я наткнулся на этот код, который я предполагал понять и не стал запускать. Мой ответ (который я предположил в своей голове) был подтвержден книгой Let Us C. Позже, когда я попытался запустить его на C, к моему удивлению, результат был полностью контрастным. C++ дает ожидаемый результат.
C++ :
int a=1;
cout<<a<<a++<<++a;
Вывод :
113
C :
int a=1;
printf("\n%d %d %d",a,a++,++a);
Вывод:
3 2 3
Я ожидал, что это будет то же самое, что и вывод, созданный C++.
У меня нет четкого представления о приоритете и ассоциативности оператора. Но этот вывод кажется совершенно неожиданным.
Я использую Atom в качестве редактора и компилятор C/C++ GCC.
two programming languages
C это не C++. Это отдельные языки программирования.are behaving
Эти конструкции имеют неопределенное поведение. Оба компилятора должны порождать демонов. (и в позднем С++ это допустимо, потому что поведение было изменено с неопределенного на неопределенное). - person KamilCuk   schedule 13.06.2020