C/C++ Blog

2009年11月29日 #

++i与i++

++i 与i++这是很多初学者遇到的问题,请不要把这个问题看得太简单了,也不要想得太复杂。请看我下面的几个语句,如果你能答对,算是过关了吧。当然抛开你那世上少有运气。不说了现在开始.........

void main(void)
{
int i=0;
int s=0;
s=(++i)+(i++)+(++i);
printf("%d,%d",i,s);
s=(i++)+(++i)+(++i);
printf("%d,%d",i,s);
}
请问这段小程序在TC2.0 和VC6.0下编译会分别得到什么样的结果.
 如果你的回答是
TC2.0: 3,6  6,15
VC6.0: 3,4    6,13 那么我恭喜你答对了。为什么结果是这样呢?
因为TC是多元运算的。首先扫描语句两个++i经过两次相加,结果是2所以S最后结果是2*3=6

printf下一个语句I 已经为3了,现在又开始扫描这语句发现两个++I所以I为5所以最后结果为3*5=15
我们看看在VC下执行的情况,程序开开扫描s=(++i)+(i++)+(++i);扫描完成后它是这样做的,先计算(++i)+(i++)此时I=1相加结果为2,再执行2+(++i)此时的I为1执行++I后成为2所以s结果为2+2=4

执行过完第一个printf语句后I为2扫描语句,先执行 (i++)+(++i)此时I=4了,相加结果为8再执行 8+(++i)=8+5=13

所以在TC中是多元运算符,在VC中是二元运算符,不过在写程序时并不提倡这样的写法。

posted @ 2009-11-29 14:27 laery 阅读(97) | 评论 (1)编辑 收藏

2009年11月28日 #

http://blog.csdn.net/keensword/archive/2005/06/23/401114.aspx

http://blog.csdn.net/keensword/archive/2005/06/23/401114.aspx

posted @ 2009-11-28 23:36 laery 阅读(56) | 评论 (0)编辑 收藏

http://www.cppblog.com/elva/

http://www.cppblog.com/elva/

posted @ 2009-11-28 20:54 laery 阅读(57) | 评论 (0)编辑 收藏

2009年11月27日 #

博客之旅

今天收到了C++博客给我的注册地址。从学校毕业到现在也工作了好几年,工作中遇到的技术问题,生活中的点点滴滴。在不经意间,悄悄的跟随时间的流逝,离我越来越远。许多美好而难忘的场景,还有因为解决了一个技术问题的激动,很让我想回忆下当初的感受。或许我是该记下些什么了。。。。。。。。

posted @ 2009-11-27 15:18 laery 阅读(60) | 评论 (0)编辑 收藏

仅列出标题