++i 的小问题
#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 6+7+8 = 21
7+7+8 = 22 ++i是先加了1再运算。。。。i++是先运算在加1 额,我今天专门就这个问题做了个小测试
#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函数中并未运算。但是我解释不了 有大神讲解下么 mse9591 发表于 2015-7-6 23:33
额,我今天专门就这个问题做了个小测试
#include
额,输出时都是先写入到一个叫堆得缓冲区中,然后再运算放到堆中的数据
然后牵扯到列队问题,先入后出,后入先出,所以他是倒过来运行的、先 --i得9再i--还是9然后++i这里是将9+1
后缀是在下一次循环是才执行的,接着i++ 还是10,结果回到第一行i还是10 mse9591 发表于 2015-7-6 23:33
额,我今天专门就这个问题做了个小测试
#include
我都没想到要那么做,才能得到结果,看完这程序。瞬间懂了
谢谢了哈 nin98 发表于 2015-7-7 00:03
我都没想到要那么做,才能得到结果,看完这程序。瞬间懂了
谢谢了哈
额……客气
新手一个!好多都还不懂呢……{:1_1:}
页:
[1]