c++中,i+++j表达式中的+如何拆分?它们的拆分规则是如何定义的?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 02:38:10
c++中,i+++j表达式中的+如何拆分?它们的拆分规则是如何定义的?

c++中,i+++j表达式中的+如何拆分?它们的拆分规则是如何定义的?
c++中,i+++j表达式中的+如何拆分?
它们的拆分规则是如何定义的?

c++中,i+++j表达式中的+如何拆分?它们的拆分规则是如何定义的?
一楼说的是对的.根据具体编译器有所不同!而不是理论上的(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.