对于int x=3
(x++)+(++x)+x的结果,
dvc++是13,而vs2019是12,
我认为是13,但不知vs哪里出了错。
++x在整个表达式执行之前执行,
x++在整个表达式执行之后执行
那么代码等价于
int x=3;
++x;
y=x+x+x;
x++;
怎么看y的值也是12呀
怎么可能是13
你仔细检查代码,看哪里写错了吧
如果代码没错,那就是编译器有问题,没有真正实现c++和++c教科书上的语法,而是对执行优先级有另一套解释,这也难免
所以实际编写代码的时候不要写这种挖坑的代码
令:s = (x++)+(++x)+x 在改写一下 s = a1 + a2 + x
跟踪了一下 dvc 和gcc, 编译器是把 a1+a2当做一个完整计算表达式,a1+a2 计算完成后 x++就会执行
vs2019估计是编译器把整个s做一个完整计算表达式, 整个表达式计算完后 x++才执行
哎哟你干嘛,编译器不同结果肯定也不同,并不是VS错了,而是这个问题本身就没有意义。