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错误不能这样写的
这就是中国的教育?拒绝回答这种问题。自己去问编译器。
在C语言中j=-i++
c中 已知 i=3,然后 j=++i+(++i)+(++i)=16 为什么
C语言中 x*=i=j 是什么意思?
C++中total::total(int i,int j){} 中的::是什么意思
请问,在C语言中,FOR循环可不可以这么写 for(i=0, j=0 ; i<5, j<6 ; i++, j++ ;)
c语言中一条语句 if (i!=k&&i!=j&&j!=k),其中的&什么意思
C语言:j=i+(++i)
a[i][j]=i*10+j中的*10是什么意思?
已知i=0, j=1, k=2, 则逻辑表达式++i || --j && ++k的值为( )。(A)0 (B)1 (C)2 (D)3
c程问题 a=(i++)+(i++)+(i++);b=(++j)+(++j)+(++j);