Мой друг и я наткнулись на интересную шутку C > C++
, так как ему нравится C над C++. Тем не менее, мне любопытно, насколько выполняется выполнение этого сегмента кода. Я побежал и составилПочтовый оператор оценки
int C;
C = 1;std::cout << (C++ < C) << "\n";
C = 1;std::cout << (C < C++) << "\n";
C = 1;std::cout << (C++ > C) << "\n";
C = 1;std::cout << (C > C++) << "\n";
выход был 1 0 0 1, используя C++ 98/C++ 11, и истина, ложь, ложь, ложь для Java.
Мой вопрос в том, как работает процесс оценки этих утверждений? Я особенно смущен, потому что C++ < C
и C > C++
противоречат друг другу в Java, оставаясь постоянными на C++, а также логикой C++ < C
, где, предположительно, левая и правая стороны равны или левая сторона больше правой.
Противоречит друг другу как? –
C++ половина этого вопроса является дубликатом; это определяют некоторые другие языки. – o11c
Также https://stackoverflow.com/questions/949433/why-are-these-constructs-undefined-behavior – Boann