Bha*_*esh 5 c# c++ expression operators operator-precedence
我在C#和C++中尝试过以下内容:
int a = 5; int b = (a++)+(++a)+(a--)+(--a);
我试图在C#和C++中得到b的结果.但我在两者中得到了不同的答案.
我在C#中得到23,在C++中得到20.
所以,请回答我为什么会这样?这可能是什么原因?
fre*_*low 7
C#从左到右对此进行评估.在C++中,像你这样的搞笑表达会调用未定义的行为,因为你正在更改变量并再次读取它而没有插入序列点.
这意味着允许不同的编译器(或甚至具有不同优化设置的相同编译器)(并且通常将)产生不同的结果(a++)+(++a)+(a--)+(--a).
(a++)+(++a)+(a--)+(--a)
归档时间:
14 年,11 月 前
查看次数:
965 次
最近记录:
8 年,5 月 前