C++ “是什么意思?”;表达式的求值顺序是从左到右。”;
编辑以澄清:我不是问排序是如何工作的。该问题并非其标记为重复的问题的重复。我已经知道C++ “是什么意思?”;表达式的求值顺序是从左到右。”;,c++,undefined-behavior,C++,Undefined Behavior,编辑以澄清:我不是问排序是如何工作的。该问题并非其标记为重复的问题的重复。我已经知道x++*++x是UB。我问的是“表达式的求值顺序是从左到右”这句话的含义 这一行摘自比亚恩·斯特劳斯图普的《C++之旅》,第二版 我本以为这意味着像intx=2;int y=x++*++x定义良好。按照我的理解,从左到右求值意味着首先求值x++(值2),++x其次求值(值4),y的最终值是8 但是clang警告说,对“x”进行了多次未排序的修改,所以我认为我对Stroustrup的引用的理解肯定是错误的 有人能解
x++*++x
是UB。我问的是“表达式的求值顺序是从左到右”这句话的含义
这一行摘自比亚恩·斯特劳斯图普的《C++之旅》,第二版
我本以为这意味着像intx=2;int y=x++*++x
定义良好。按照我的理解,从左到右求值意味着首先求值x++
(值2),++x
其次求值(值4),y
的最终值是8
但是clang警告说,对“x”进行了多次未排序的修改,所以我认为我对Stroustrup的引用的理解肯定是错误的
有人能解释一下他的真正意思吗?“表达式的顺序是从左到右”的意思是intz=a/b*c代码>将首先将a除以b,然后将结果与c相乘。这将产生与intz=a*c/b不同的结果代码>,因为整数除法将丢失任何分数
在“现实世界”数学中,这两个表达式是等价的;在整数计算中,它们不是。您没有在示例代码中调用函数。@NathanOliver,我已编辑以解释为什么我不认为这个问题是重复的。请重新打开。你想知道的都可以在这里找到:反例:在x+y/z
中,首先计算y/z
,然后计算加法。因为引用没有提到操作顺序,我不认为这是什么意思。