注册 登录
编程论坛 C++教室

y=++x + ++x + ++x;

w1024659495 发布于 2013-09-29 11:53, 694 次点击
#include <stdio.h>
void main()
{
    int x=1,y=0;
    y=++x + ++x + ++x;
    printf("x=%d y=%d\n",x,y);
}为什么答案是4和10啊
8 回复
#2
yuccn2013-09-29 12:49
月经贴,这种无聊的题目每2周都会出现一才。


x=4 不解析
x=10 这个和编译器有关

debug版本
    int x=1,y=0;
012C14BE  mov         dword ptr [x],1  
012C14C5  mov         dword ptr [y],0  
    y=++x + ++x + ++x;
012C14CC  mov         eax,dword ptr [x]  
012C14CF  add         eax,1  
012C14D2  mov         dword ptr [x],eax  
012C14D5  mov         ecx,dword ptr [x]  
012C14D8  add         ecx,1  
012C14DB  mov         dword ptr [x],ecx  
012C14DE  mov         edx,dword ptr [x]  
012C14E1  add         edx,1  
012C14E4  mov         dword ptr [x],edx  
012C14E7  mov         eax,dword ptr [x]  
012C14EA  add         eax,dword ptr [x]  
012C14ED  add         eax,dword ptr [x]  
012C14F0  mov         dword ptr [y],eax  
    printf("x=%d y=%d\n",x,y);

x=4 y=12



releasa 版本
void main()
{
    int x=1,y=0;
    y=++x + ++x + ++x;
    printf("x=%d y=%d\n",x,y);
00011000  push        0Ch  
00011002  push        4  
00011004  push        offs
et string "x=%d y=%d\n" (120F4h)  
00011009  call        dword ptr [__imp__printf (120A0h)]  
0001100F  add         esp,0Ch  
}

注意红色的。编译器直接把结果push 进去了。变态吧,建议楼主没有必要折腾这类型应试教育的题目。知道 ++ 是自增1 就行了
#3
blueskiner2013-09-29 14:03
这种风格的代码,要是让我打分,直接给零。
#4
wp2319572013-09-29 14:04
有分哦
#5
qunxingw2013-09-29 17:11
强行复习
#6
dyh8399110102013-09-29 17:19
内容为空,无法通过。
#7
can39811322013-09-30 09:06
不知道为什么Y是10
#8
peach54602013-09-30 12:06
哎,隔三岔五总有人来问这些脑残的问题。。。
#9
w10246594952013-10-11 10:04
    明白
1