C++中关于cout的输出顺序问题

2024年11月19日 21:39
有2个网友回答
网友(1):

这个属于未定义行为,代码中是不应该这么写的。

若操作符有两个以上的操作数(例如a+b中,+有两个操作数),则求这两个操作数的值的顺序未定义(也就是说,先求a的值还是先求b的值是未确定的)。

你的 cout< 中的strlwr(a) 和 strup(a) 两个操作是不应该有先后顺序的,但事实是这两个谁先求值会导致结果的不同,所以是不符合C和C++标准的行为。

比如 int a = 10,c;
c = a++ + ++a + a-- + --a;
我们不能确定四个相加的表达式哪一个先求值,所以也就不能确定最后c的值是多少。

网友(2):

C++可没有固定了运算顺序,只定义了运算优先级。编译器觉得怎样的运算顺序方便一些就怎样做。所以你最好这样写