符号-分节6(++,--操作符)

这绝对是一对让人头疼的问题。先来点简单的:

 int i = 3;

(++i)+(++i)+(++i);

表达式的值为多少?15 吗?16 吗?18 吗?

其实对于这种情况,C语言标准并没有作出规定。

有点编译器计算出来为18,因为i 经过3 次自加后变为6,然后3 个6 相加得18;

 而有的编译器计算出来为16(比如Visual C++6.0),先计算前两个i 的和,这时候i 自加两 次,2 个i 的和为10,然后再加上第三次自加的i 得16。

其实这些没有必要辩论,用到哪个 编译器写句代码测试就行了。

但不会计算出15 的结果来的。

++、--作为前缀,我们知道是先自加或自减,然后再做别的运算;

但是作为后缀时,到底什么时候自加、自减?这是很多初学者迷糊的地方。

假设i=0,看例子:A),j =(i++,i++,i++); B),for(i=0;i<10;i++) { //code }

C),k = (i++)+ (i++)+ (i++); 你可以试着计算他们的结果。

A) 例子为逗号表达式,i 在遇到每个逗号后,认为本计算单位已经结束,i 这时候自加。

关于逗号表达式与“++”或“--”的连用,还有一个比较好的例子:

int x; int i = 3;

x = (++i, i++, i+10);
问x 的值为多少?i 的值为多少?

按照上面的讲解,可以很清楚的知道,逗号表达式中,i 在遇到每个逗号后,认为本计算 单位已经结束,i 这时候自加。

所以,本例子计算完后,i的值为5,x的值为15。

B) 例子i 与10 进行比较之后,认为本计算单位已经结束,i 这时候自加。

C) 例子i 遇到分号才认为本计算单位已经结束,i 这时候自加。

也就是说后缀运算是在本计算单位计算结束之后再自加或自减。

C 语言里的计算单位大体分为以上3 类。 留一个问题:

for(i=0,printf(“First=%d”,i); i<10,printf(“Second=%d”,i); i++,printf(“Third=%d”,i))

{

printf(“Fourth=%d”,i);

 }

打印出什么结果?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值