牡丹花下死做鬼 发表于 2013-8-9 08:53:52

纠结于自增自减新手朋友请看

我发现 对于 i++,++i,i--,--i 这类自增自减的问题 有好多人提问
我是想说下其实不用纠结,你写程序的时候完全可以把自增自减写成一个独立的代码 如i
#include<stdio.h>
void main()
{
   int i = 0;
   while(i<50)
   {
         printf("XXX我爱你%d次\n",i);
         i++;//就这样写成一个独立的代
               //码这样的话 i++ = ++i
   }
}这是完全可以的
如果你一定要弄清楚
对于i++ 和 ++i的区别就不多说了论坛上大牛们都解释了N遍了 比如:

http://bbs.fishc.com/thread-35097-1-1.html
我就说点其他的明明你弄清楚了i++ 和 ++i的区别输出的结果还是不对
1.编译器 是自左向右 还是 自右向左??
也就是说
pirntf("%d,%d",++i,i++);是先执行++i 还是先执行 i++ 这没标准答案都有可能 所以你的结果可能和书上的和甲鱼的结果不同
还有就是 编译器优化问题请看以下代码
#include<stdio.h>
void main()
{
        int i, j;
        i = 5;
        j = i++ + i++ + i++;
        printf("j = %d\n",j);
}你们觉得输出结果是多少?? 是不是等于 5 + 6 + 7 = 18??
看下我运行的结果

很奇怪是吧居然是15 为什么??(i = 8了)
我问过我那群里的人他们告诉我是编译器优化的问题 具体我也没搞懂 大概就是先 j = i + i + i 在执行自增命令了(这个问题本菜确实不清楚解释很有可能是错误的)

我是牡丹,我为菜鸟代言!

lark 发表于 2014-6-9 00:02:27

大哥,加括号啊!!!要是这么写,会被扔白菜,西瓜皮的
页: [1]
查看完整版本: 纠结于自增自减新手朋友请看