社区
新手乐园
帖子详情
int x=4,y=(++x)+(++x)+(++x); 结果21???为什么呀?在线等.............................急
Sachegirl
2005-03-09 08:57:18
int x=4,y=(++x)+(++x)+(++x);
/* y=21 */(我知道运算后x=7,只是不明白,为什么y=21???)
请说明原因,谢谢
...全文
1902
84
打赏
收藏
int x=4,y=(++x)+(++x)+(++x); 结果21???为什么呀?在线等.............................急
int x=4,y=(++x)+(++x)+(++x); /* y=21 */(我知道运算后x=7,只是不明白,为什么y=21???) 请说明原因,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
84 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
archim
2005-04-20
打赏
举报
回复
对int x=4,y=(++x)+(++x)+(++x); 诸如此类的问题的执着研究是中国计算机教育的特色吗?
fenving
2005-04-20
打赏
举报
回复
to whyglinux(山青水秀)&初出毛炉
hehe,说的也是
sTigerwsk
2005-04-20
打赏
举报
回复
书和书讲的不一样
在TCPL里说的是因为优先级的问题
whyglinux
2005-04-19
打赏
举报
回复
To hermit2004(初出毛炉)
>> 回去好好看看书你们!这么简单的问题都不懂!
其实这个问题并不简单。真正把这个问题弄清楚了,就表明你又进了一大步。很可惜,包括你在内的很多人对这个问题并不清楚。
想问一下:x=4;,你是怎么推导出“第一个(++x)=6”的?这才是一个简单的问题吧。
jingbinqwe
2005-04-19
打赏
举报
回复
使用TC2.0
int x=4;int y=(++x)+(++x)+(++x);
y值的确为21
int x=4;int y=++x;
y值为5,说明编译器本身不应有个别问题
int x=4;int y=+++x;
y为5
int x=4;int y=+(++x);
y为5
int x=4;int y=x+++x;
y为8
int x=4;int y=x+(++x);
y为10
但int x=4;int y=++(++x);
编译出错
我想问题出在上面两行代码的区别上,编译器自身共性的问题(Turbo C2.0)++x前有+且有变量是自加
两次
hermit2004
2005-04-19
打赏
举报
回复
回去好好看看书你们!这么简单的问题都不懂!
x=4; y=(++x)+(++x)+(++x);++运算符的意思是先加1赋值给x后再运算。第一个(++x)=6,第二个(++x)=7,第三个(++x)=8,y=6+7+8=21;
charkie
2005-04-19
打赏
举报
回复
TC3中结果也是21。
charkie
2005-04-19
打赏
举报
回复
其他编译器中的结果如何呢?有没有人试过啊?
sTigerwsk
2005-04-18
打赏
举报
回复
······
++的优先级高
会先做三次自增
然后再加
然后你就明白了
awperpvip
2005-04-18
打赏
举报
回复
与编译器有关
finytang
2005-03-19
打赏
举报
回复
这个没甚么好讨论的,完全依赖编译器
类似的还有
x=f()+g();
printf("%d%d",n++,f(n));
都是和编译器的计算顺序有关的,所以这种代码还是不要写为好
BillSmith
2005-03-19
打赏
举报
回复
写出这种代码的人该吊起来打!
bin2142
2005-03-19
打赏
举报
回复
好无聊啊!
thuers
2005-03-18
打赏
举报
回复
21
和编译器有关系
我们老总专门讲过
sharkhuang
2005-03-18
打赏
举报
回复
基本上应该是19
BillSmith
2005-03-17
打赏
举报
回复
这里该搞个FAQ了。
这种问题直接踢掉。
5261
2005-03-16
打赏
举报
回复
不同的编译器会有不一样的结果!!!!!!
我还见过得Y=18
HNET
2005-03-16
打赏
举报
回复
依赖于编译器的运算方式:有的编译器从左往右计算表达式,有的则从右往左计算。
另外,x = 1 ;( x++ )的值为1,但x的值为2;
好了,假设编译器从左往右计算复合表达式,则:
(++x)+(++x)+(++x) = ( ( ++x ) + ( ++x ) ) + ( ++x )
= ( 4 + 6 ) + ( ++x ) // x == 6
= 10 + 11 // x == 7
= 21
flying_dancing
2005-03-16
打赏
举报
回复
-_-
好贴!顶
我自己也试了 VC6.0是19
飞猪不瘦
2005-03-16
打赏
举报
回复
看看在vc6.0中的汇编代码就知道为什么了,y = 19
int y=(++x)+(++x)+(++x);
mov eax,dword ptr [ebp-4]
add eax,1
mov dword ptr [ebp-4],eax
mov ecx,dword ptr [ebp-4]
add ecx,1
mov dword ptr [ebp-4],ecx
mov edx,dword ptr [ebp-4]
add edx,dword ptr [ebp-4]
mov eax,dword ptr [ebp-4]
add eax,1
mov dword ptr [ebp-4],eax
add edx,dword ptr [ebp-4]
mov dword ptr [ebp-8],edx
加载更多回复(64)
透彻理解Java中的
++
运算(x
++
和
++
x的区别)
面试中常见的一个问题x
++
跟
++
x的区别 ...
int
y = x
++
; 由于x
++
参与了运算,所以先将x的值赋给了y,然后再进行自增运算。 如果是下面的代码呢?
int
x = 5; System.out.pr
int
ln(x
++
); 打印结果是多少呢
初学JVVA。求详细过程。。
int
x = 4;
int
y = (--x)+(x--)+(x*10); 求Y
(--x)把x减1再用,3,x变成3(x--)把x用了再减,3,x变成2(x*10)此时x为2,y=3+3+20 首先结果等于26,计算顺序与数学相同,你先要明白--X和X--的区别,第一个括号中X是3,第二个X也是3,第三个是2。...
java
int
x,执行下列Java语句:
int
x = 1; switch ( x+1 ) { case...
阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某绘图系统存在Po
int
、阅读以下说明和Java代码,将应填入(n)处的...switch(a){case1:swmain(){
int
x=15,y=
21
,z=0;switch(x%3){case...
若w=1,x=2,y=3,z=4,则条件表达式w>x?w : z>y?z : x的结果为 4
求赞----求关注 若w=1,x=2,y=3,z=4,则条件表达式w>...z : x的结果为___4____。 (A>B) ? A :B ; 若(A>B)为真 ,则取 A , 如果(A>B)为假,则取 B。 首先查看一下运算符的优先性,不懂可以...
下面程序段的运行结果是: for(y=1;y<10;) y=((x=3*y,x+1),x-1); pr
int
f(“x=%d,y=%d“,x,y); A)x=27,y=27 B)x=12,y=
) y=((x=3*y,x+1),x-1); pr
int
f(“x=%d,y=%d”,x,y); A)x=27,y=27 B)x=12,y=13 C)x=15,y=14 D)x=y=27 逗号表达式注意两个bai基本知识: 1. 逗号表达式的运算i顺序是从左向右运算 2. 逗号表达式的值取逗号中最右...
新手乐园
33,323
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章