鱼C论坛

 找回密码
 立即注册
查看: 5125|回复: 4

又一个困扰于自增自减的鱼仔

[复制链接]
发表于 2013-4-5 15:06:58 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
void main()
{
        int i = 8;
        int a = 5,b = 5,p,q;
        printf("%d\n",++i);
        printf("%d\n",--i);
        printf("%d\n",i++);
        printf("%d\n",i--);
        printf("%d\n",-i++);
        printf("%d,%d\n",-i--,i);
        p=(a++)+(a++)+(a++);
        q=(++b)+(++b)+(++b);
        printf("%d,%d,%d,%d\n",p,q,a,b);
}
最后i的输出值为什么是i=9;q=22呢?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-5 15:16:59 | 显示全部楼层
在红体后加“printf("%d\n",i);”i=8
如何理解呢?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-5 15:32:37 | 显示全部楼层
本帖最后由 feitianqu 于 2013-4-16 21:01 编辑

q=7+7+8在VC6.0
q=8+8+8在TC
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-5 15:40:30 | 显示全部楼层
我觉得你这样学习有点不合理,你只要理解了++i表示先自加后引用,i++表示先引用后自加,至于你那个一大堆拿来,看的眼花,举个例子吧:
#include <stdio.h>
void main()
{
        int i=0,j=0;
        ++i;
        j++;
        printf("%d  %d",i,j);
        i++;
        printf("\n%d",i);
}
运行结果为:
1     1
2
==================
为什么会i和j都1呢
因为++i;   j++;不管先引用还是先自加,只要那条语句执行完了结果都是一样的,结果为2也同理
这样说你可能还有点迷茫,再举一例吧:
#include <stdio.h>
void main()
{
        int i=0;
        printf("%d",i++);
}
结果为输出0,因为先引用i,而i=0,引用,输出0,如果你在printf("%d",i++);下面加上printf("%d",i);这个i的值就为1了。
希望这些对你有帮助
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-7 17:15:42 | 显示全部楼层
谢谢“飞鸽”的指导...激动人心,无法言表!:lol
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-4 13:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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