鱼C论坛

 找回密码
 立即注册
查看: 1800|回复: 6

++i 的小问题

[复制链接]
发表于 2015-7-5 21:32:31 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
        int a=5,b=5,d=0,i=0;
        for(;i<3;i++)
        {
                d=d+(++a);
        }
        printf("  %d",d);
        d=(++b)+(++b)+(++b);
        printf("\n  %d\n",d);
}
为什么 第一次算的结果是21 第二次结果是22
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-5 22:06:32 | 显示全部楼层
6+7+8 = 21
7+7+8 = 22
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-6 15:58:42 | 显示全部楼层
++i是先加了1再运算。。。。i++是先运算在加1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-6 23:33:14 | 显示全部楼层
额,  我今天专门就这个问题做了个小测试

#include <stdio.h>

void main()
{
        int i=10;
        printf("i的输出结果为:");
        printf("%d\n",i);
        printf("i++的输出结果为:");
        printf("%d\n",i++);                  //i++  意为i先参与其他运算之后再自身加1
        printf("++i的输出结果为:");
        printf("%d\n",++i);                  //++i  意为i先自身加1再参与其他运算
        printf("i--的输出结果为:");
        printf("%d\n",i--);                  //i--  意为i先参与其他运算之后再自身加1
        printf("--i的输出结果为:");
        printf("%d\n",--i);                  //--i  意为i先自身加1再参与其他运算
        printf("\n");
        printf("\n");
        printf("\n");
        printf("***********************************\n");
        printf("*****由一个PRINTF函数输出的结果****\n");
        printf("***********************************\n");

       
    printf("i,i++,++i,i--,--i的输出结果为:\n");
        printf("i的输出结果为:%d\ni++的输出结果为:%d\n++i的输出结果为:%d\ni--的输出结果为:%d\n--i的输出结果为:%d\n",i,i++,++i,i--,--i);        
         //由输出结果可以看出printf函数在有多参数的时候由右至左运算
    printf("\n");
        printf("\n");
        printf("\n");
        printf("***********************************\n");
        printf("*****由一个PRINTF函数输出的结果****\n");
        printf("*****调换i和i++的位置之后的结果****\n");
        printf("***********************************\n");

    printf("i++,i,++i,i--,--i的输出结果为:\n");
        printf("i++的输出结果为:%d\ni的输出结果为:%d\n++i的输出结果为:%d\ni--的输出结果为:%d\n--i的输出结果为:%d\n",i++,i,++i,i--,--i);  
        printf("\n");
        printf("最终i=%d\n",i);

//        printf("%d",i++);
}

/*------------------------------------------------------
    以上程序运行结果如下:



i的输出结果为:10
i++的输出结果为:10
++i的输出结果为:12
i--的输出结果为:12
--i的输出结果为:10



***********************************
*****由一个PRINTF函数输出的结果****
***********************************
i,i++,++i,i--,--i的输出结果为:
i的输出结果为:10
i++的输出结果为:10
++i的输出结果为:10
i--的输出结果为:9
--i的输出结果为:9



***********************************
*****由一个PRINTF函数输出的结果****
*****调换i和i++的位置之后的结果****
***********************************
i++,i,++i,i--,--i的输出结果为:
i++的输出结果为:10
i的输出结果为:10
++i的输出结果为:10
i--的输出结果为:9
--i的输出结果为:9

最终i=10
Press any key to continue

-----------------------------------------------*/


发现问题:i++,i--在printf函数中并未运算。但是我解释不了   有大神讲解下么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-6 23:58:34 | 显示全部楼层
mse9591 发表于 2015-7-6 23:33
额,  我今天专门就这个问题做了个小测试

#include

额,输出时都是先写入到一个叫堆得缓冲区中,然后再运算放到堆中的数据
然后牵扯到列队问题,先入后出,后入先出,所以他是倒过来运行的、先 --i得9再i--还是9然后++i这里是将9+1
后缀是在下一次循环是才执行的,接着i++ 还是10,结果回到第一行i还是10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-7 00:03:51 | 显示全部楼层
mse9591 发表于 2015-7-6 23:33
额,  我今天专门就这个问题做了个小测试

#include

我都没想到要那么做,才能得到结果,看完这程序。瞬间懂了
谢谢了哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-7 02:12:26 | 显示全部楼层
nin98 发表于 2015-7-7 00:03
我都没想到要那么做,才能得到结果,看完这程序。瞬间懂了
谢谢了哈

额……客气
新手一个!好多都还不懂呢……{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-26 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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