c++中,i+++j表达式中的+如何拆分?

来源:百度知道 编辑:UC知道 时间:2024/05/06 00:14:45
它们的拆分规则是如何定义的?

一楼说的是对的。根据具体编译器有所不同!而不是理论上的(i++)+j这种样子。

实际中,首先要避免这种情况发生,自己加上个括号,多按两个键死不了!另外,如果想自己验证到底是怎么个执行顺序,最简单有效的办法就是反汇编。

在Visual C++ 2008中,反汇编结果如下:
sum = i+++j;
00BE13A3 mov eax,dword ptr [i]
00BE13A6 add eax,dword ptr [j]
00BE13A9 mov dword ptr [sum],eax
00BE13AC mov ecx,dword ptr [i]
00BE13AF add ecx,1
00BE13B2 mov dword ptr [i],ecx
于是一下子就看出来,先做的操作是i+j,然后是i++。也就是Visual C++编译器解释它为:(i++)+j。

别听一楼胡说!
i+++j表达式先做i+j,再做i++

可以是(i++)+j
也可以是i+(++j)

i+++j错误不能这样写的

这就是中国的教育?拒绝回答这种问题。自己去问编译器。