鱼C论坛

 找回密码
 立即注册
查看: 3262|回复: 2

自加自减运算符中的一个例题,大家帮忙解释下

[复制链接]
发表于 2011-7-21 13:20:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

#include <stdio.h>
main()
{
int i=8;
printf("%d\n",++i);              /* 结果为9*/
printf("%d\n",--i);               /*结果为8*/
printf("%d\n",i++);           /* 结果为什么为8?不明白 */
printf("%d\n",i--);            /*结果为什么为9?不明白*/
printf("%d\n",-i++);
printf("%d\n",-i--);
}

结果为:
9
8
8
9
-8
- 9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 14:51:37 | 显示全部楼层
[b]++i,--i 的意思是在使用i之前,先使i的值加(减)1;而i++,i--的意思是在使用i之后,再使i的值加(减)1。故:
printf("%d\n",++i);              /* 结果为9*/          语句中i原先的值为8,使用前先自增为9,此时表达式++i的值也为9,故输出为9。
printf("%d\n",--i);               /*结果为8*/            语句中i原先的值为9,使用前先自减为8,此时表达式---i的值也为8,故输出为8。
printf("%d\n",i++);           /* 结果为什么为8?不明白 */        语句中i原先的值为8,由于i++是先使用后运算,故此时表达式i++的值也为8,故输出为8,但运算后,i进行了自增,变成9。
printf("%d\n",i--);            /*结果为什么为9?不明白*/           语句中i原先的值为9,由于i--是先使用后运算,故此时表达式i--的值也为9,故输出为9,但运算后,i进行了自减,变成8。
printf("%d\n",-i++);      由于负号运算符和自增(减)运算符的优先级相同,且均为右结合性,故-i++相当于-(i++),此时,先取出i的值使用,输出-i的值-8,也就是表达式-i++的值-8,然后使i的值自增为9(注意这里i的值一定不是-9)
printf("%d\n",-i--);       原理同上一条语句,表达式-i--输出为-9,而i的值自减为8

你可以用下列语句进行检验体会,也可参看谭浩强老师的C程序设计第二版第24页关于自增(减)运算符的解释。

#include <stdio.h>
main()
{
int i=8;
printf("++i=%d\n",++i);            /* 结果为9*/
printf("i=%d\n",i);                                  /*i为9*/
printf("--i=%d\n",--i);            /*结果为8*/
printf("i=%d\n",i);                                  /*i为8*/
printf("i++=%d\n",i++);            /* 结果为8 */
printf("i=%d\n",i);                                  /*i为9*/
printf("i--=%d\n",i--);            /*结果为9*/
printf("i=%d\n",i);                                  /*i为8*/
printf("-i++=%d\n",-i++);          /*结果为-8*/
printf("i=%d\n",i);                                  /*i为9*/
printf("-i--=%d\n",-i--);          /*结果为-9*/
printf("i=%d\n",i);                                  /*i为8*/
}








想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-21 21:34:53 | 显示全部楼层
感谢这位朋友的详细解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-8 04:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表