| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1131 人关注过本帖, 1 人收藏
标题:谁能帮我解释一下输出结果为什么是这个?
只看楼主 加入收藏
曦月
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2010-4-7
收藏
得分:5 
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
里的表达式是自右向左运算的,但i++和i--是printf函数取值后运算的,而++i和--i是先运算再取值,也就是7说此函数是这样运算的:--i后i=7,第二个输出7,然后再运行++i,第一个输出8,后面两个不参与输出时的运算,所以都是8。此函数输出完后再运行i++和i--,你可以在函数外用printf("%d\n",i)进行检验。
如果还不明白的话可以自己多次试验,少输出几个变量试试。
2010-04-29 21:22
曦月
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2010-4-7
收藏
得分:0 
我用VC6.0编译的结果是8 7 8 8
2010-04-29 21:24
miracle110
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-29 21:25
miracle110
该用户已被删除
收藏
得分:0 
回复 11楼 曦月
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-29 22:39
赤那
Rank: 3Rank: 3
来 自:广东
等 级:论坛游侠
威 望:1
帖 子:127
专家分:178
注 册:2010-3-1
收藏
得分:0 
不同的编译器的运算结合方向有所不同
2010-04-29 23:43
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
自右向左运行,i=8.++i,--i,i++,i--,从右向左看。执行i--时,先取值8,再减,得7,在执行i++,也是先取值7,再加1,得i=8,再执行--i,先减1,得7,i此时的值就为7,在执行++i,先加1,得8,即最后结果为8 7 7 8。

付出终将有回报!Ibelieve!
2010-04-29 23:53
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
不过还要看不同的编译器,不同的编译器得到的结果不一样,但是i++与i--得算法实施中不会变的!你的好好去看看!

付出终将有回报!Ibelieve!
2010-04-29 23:55
曦月
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2010-4-7
收藏
得分:0 
回复 14楼 miracle110
对啊,首先是--i,得到的是7,也就是第二个输出的值,此时i=7,然后再运行++i,得到的是8,也就是第一个输出的值,在printf里是从右向左开始运算的
2010-04-30 11:21
快速回复:谁能帮我解释一下输出结果为什么是这个?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020543 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved