烦请哪位高手能详细解释下C语言中的一个格式:a++*2 (a是变量),谢谢!

我再问的透明点,如果变量a等于2,那么结果是多少呢?本人是新手。呵~!

++x的值是(增量之后的)新值,结果是一个左值x,例如,y=++x等价于y=(x+=1);
参考一下VC6的汇编代码:
x在内存单元ebp-4,y在内存单元ebp-8
y=++x VC6下的汇编代码为:
mov edx,dword ptr [ebp-4]
add edx,1
mov dword ptr [ebp-4],edx
mov eax,dword ptr [ebp-4]
mov dword ptr [ebp-8],eax

x++的值则是x原有的值,结果是一个右值,临时变量,例如,y=x++等价于y=(t=x,x+=1,t);
y=x++ VC6下的汇编代码为:
mov eax,dword ptr [ebp-4]
mov dword ptr [ebp-8],eax
mov ecx,dword ptr [ebp-4]
add ecx,1
mov dword ptr [ebp-4],ecx

也就是说a++*2 等价于(t=a,a+=1,t)*2,先取a的值在表达式里用,然后再给a+1。也可以写成这样a*2,a++;

如果a=2,表达式结果是4,a的值是3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-25
结果就是 a*2, 附带效果是a自加1
第2个回答  2011-07-25
正解,,
乘法优先
第3个回答  2011-07-25
自己在VC上跑一下,不同的环境貌似出来的结果是不一样的
第4个回答  2011-07-25
a++*2=a*2
然后a=a+1
相似回答