鱼C论坛

 找回密码
 立即注册
查看: 2724|回复: 15

(++j)+(++j)+(++j)=?

[复制链接]
发表于 2011-10-21 17:27:35 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>

  2. void main()
  3. {
  4. int i = 5, j = 5, p, q;
  5. p = (i++) + (i++) + (i++);
  6. q = (++j) + (++j) + (++j);
  7. printf("%d,%d,%d,%d\n", p, q, i, j);
  8. }
复制代码

运算结果是:
15,22,8,8

为什么(++j)+(++j)+(++j)的结果是22而不是24?

新手求助~~~万分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 17:50:51 | 显示全部楼层
q = (++j) + (++j) + (++j);

q=6+7+8=22?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 17:53:29 | 显示全部楼层
度娘找到的,不知道对你有木有用?

一直以来,++ --语法浪费了太多人的时间。说句实在话,++ -- 在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处了。
由于中国的C语言教程长期以来被谭浩强主宰,而谭又错误的把++ --作为一个C语言重点来教,并增加了一些难点,把本来很简单的语法,搞得复杂无比!

简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;

如果实在搞不明白++ --怎么回事,那也不是什么天塌下来的事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。
而且,这也是一种好的程序风格:++ -- 语句如非特殊需要,请单独一行使用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 17:54:52 | 显示全部楼层
这个不同的编译器会得出不同的结果,就不用深究了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 18:18:22 | 显示全部楼层
...这么设计的人就是脑残。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 18:56:46 | 显示全部楼层
这个问题不要继续研究了,没什么意义。。
如果你自己都不确认你想要做什么,就不要写到代码里让编译器帮你实现。
也提醒楼主以后不要写这样的代码。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 19:42:35 | 显示全部楼层
楼主!你真棒!考试最喜欢考这个了(C语言的细节,出题者最喜欢考了,多少英雄败在这里呀!),楼主我爱你呀!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-21 19:43:13 | 显示全部楼层
晕,楼上的,这代码不是我写的,是小甲鱼视频里的一个练习,我打出来看不懂才发上来问的
谢谢大家的帮助,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 20:53:03 | 显示全部楼层
4楼正解,不用纠结这个问题,实际当中只写表达式++i,但是只能使用i,否则要出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 21:51:57 | 显示全部楼层
大家自己写程序时,谁用到过这种东东啊???????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 01:16:09 | 显示全部楼层
................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-10-23 14:03:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-24 18:59:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-24 19:01:38 | 显示全部楼层
inside 发表于 2011-10-21 19:43
晕,楼上的,这代码不是我写的,是小甲鱼视频里的一个练习,我打出来看不懂才发上来问的
谢谢大家的帮助, ...

这是编译器自作聪明得出的“错误结果”。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-24 19:02:45 | 显示全部楼层
inside 发表于 2011-10-21 19:43
晕,楼上的,这代码不是我写的,是小甲鱼视频里的一个练习,我打出来看不懂才发上来问的
谢谢大家的帮助, ...

奥,不对,不是编译器,是开发环境,VC++的原因,其实结果是错误的。如果对代码反汇编就能看出错在哪里了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-24 19:28:26 | 显示全部楼层
编译器的死角
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-28 01:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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