鱼C论坛

 找回密码
 立即注册
查看: 5280|回复: 1

[新人报道] 纠结于自增自减新手朋友请看

[复制链接]
发表于 2013-8-9 08:53:52 | 显示全部楼层 |阅读模式

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

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

x
我发现 对于 i++,++i,i--,--i 这类自增自减的问题 有好多人提问
我是想说下其实不用纠结,你写程序的时候完全可以把自增自减写成一个独立的代码 如i
  1. #include<stdio.h>
  2. void main()
  3. {
  4.      int i = 0;
  5.      while(i<50)
  6.      {
  7.            printf("XXX我爱你%d次\n",i);
  8.            i++;//就这样写成一个独立的代
  9.                  //码这样的话 i++ = ++i
  10.      }
  11. }
复制代码
这是完全可以的
如果你一定要弄清楚
对于i++ 和 ++i的区别就不多说了论坛上大牛们都解释了N遍了 比如:
http://bbs.fishc.com/thread-35097-1-1.html
我就说点其他的明明你弄清楚了i++ 和 ++i的区别输出的结果还是不对
1.编译器 是自左向右 还是 自右向左??
也就是说
  1. pirntf("%d,%d",++i,i++);
复制代码
是先执行++i 还是先执行 i++ 这没标准答案都有可能 所以你的结果可能和书上的和甲鱼的结果不同
还有就是 编译器优化问题请看以下代码
  1. #include<stdio.h>
  2. void main()
  3. {
  4.         int i, j;
  5.         i = 5;
  6.         j = i++ + i++ + i++;
  7.         printf("j = %d\n",j);
  8. }
复制代码
你们觉得输出结果是多少?? 是不是等于 5 + 6 + 7 = 18??
看下我运行的结果
1.png
很奇怪是吧居然是15 为什么??(i = 8了)
我问过我那群里的人他们告诉我是编译器优化的问题 具体我也没搞懂 大概就是先 j = i + i + i 在执行自增命令了(这个问题本菜确实不清楚解释很有可能是错误的)

我是牡丹,我为菜鸟代言!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-9 00:02:27 From FishC Mobile | 显示全部楼层
大哥,加括号啊!!!要是这么写,会被扔白菜,西瓜皮的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 01:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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