对c或c ++中的递增和递减运算符感到困惑.预增量或预减量背后的实际逻辑是什么?

-1 c++

int a = 3;
cout << ++a << a++ << ++a << a++ << endl;
Run Code Online (Sandbox Code Playgroud)

codeblocks :: mingw上这段代码的答案是7573.我到现在所知道的是,后增量是正确的,但前增量有一些不同的逻辑.对于所有预增量,最后一个增量的最后一个值将是相同的.任何人都可以用++ a告诉我实际发生了什么.

还有一件事需要从右到左解决.谢谢你的回答.

M.M*_*M.M 6

从C++ 17开始:

在移位运算符表达E1<<E2E1>>E2,每一个值计算和的副作用E1的每一个值的计算和副作用之前进行测序E2

所以输出是明确的,应该是4466.

在C++ 17之前,代码导致了未定义的行为,如此处所述.您的输出表明您使用的是旧编译器(或在旧模式下调用编译器).