A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© llo 中级黑马   /  2015-7-12 17:12  /  4296 人查看  /  53 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #include <stdio.h>
  2. int main()
  3. {
  4.       int i=8;     
  5.       printf("++i的值=%d \n++i的值=%d \n--i的值=%d \ni--的值=%d\n",++i,++i,--i,i--);
  6.       return 0;
  7. }
复制代码
为什么输出的结果是 9 8 7 8不理解啊  能详细点????????

53 个回复

正序浏览
++i:先自加,然后再返回值。

i++:先返回值,然后再自加。

貌似是这么回事,然而你代码全部写成++i能输出出这样的结果。。。我觉得你的电脑编程软件还蛮幽默。。。
回复 使用道具 举报
wuqi 中级黑马 2016-4-24 23:03:30
53#
4楼正解  今天老师讲了  不同编译器会出现顺序不同的情况
回复 使用道具 举报
结果是  9 10 9 9
回复 使用道具 举报
现阶段 我的学的C 里在xcode中  我是这样记的  ++在前就是先加在用,在后就是先用在加,--同理
回复 使用道具 举报
现阶段 我的学的C 里在xcode中  我是这样记的  ++在前就是先加在用,在后就是先用在加,--同理
回复 使用道具 举报
9    首先i=8,++i,在原文中代表i+1=9后再输出,所以是输出9,而此时i=9;
10  接着还是++i,在原文中代表i+1=10后再输出,所以是输出10,而此时i=10;
9    然后是--i,在原文中代表i-1=9后再输出,所以是输出9,而此时i=9;
9    最后是i--,这一步在原文中的意思是先输出i的值,i再自检,所以输出9,而经过输出之后,i=8;
如有错误希望各位大神指导··谢谢··
回复 使用道具 举报
我好像知道了些什么
回复 使用道具 举报
Mal 中级黑马 2015-7-23 18:43:44
47#
运行结果9 10 9 9
回复 使用道具 举报
后街男孩 发表于 2015-7-23 13:10
你这样是不是故意避开了问题 假如说给你出这样的题 你认为输出的结果是多少? ...

我怎么避开了?我明明告诉他 ,为什么他运行的结果和他理想的结果不一样的原因,是因为前面用了i,后面接着用i,造成后面结果的不准确。然后前面几楼全部都说运行结果和理想结果不一样的原因是版本问题,你看清楚问题再说话好么? 真不懂你怎么考虑的,我是在解释这个问题怎么出错了,而不是去做这道题。如果你让我去做这道题的话,楼主已经做对了,因为题目就不是按他的想法来出的题。如果是按他的想法出的题,那他还写帖子问别人干什么?如果你能仔细的看楼主的问题和我写的答案,你就知道我形容的到底是什么意思了。不要在这种问题上纠结过多时间,一点收益没有的。
回复 使用道具 举报
++ /--  在前 先自增或自减后,再执行当前操作
++ /--  在后 先执行当前操作,然后再自自增或自减
回复 使用道具 举报
++i的值=9
++i的值=10
--i的值=9
i--的值=9
回复 使用道具 举报
不需要太纠结这些问题。i++与++i有些编译器处理方式确实不一样,不需要太多研究,代码都是需要带上编译环境来说的,比如我基础测试里面的题目  int  a = 5; int b = (++a) + (a++); 输出a,b的值,不同编译器就会产生不同答案了。我用Ubuntu和CentOS 都是7和13,但是用VS2010就是7和12。所以带上编译器和系统才有讨论价值
回复 使用道具 举报
不需要太纠结这些问题。i++与++i有些编译器处理方式确实不一样,不需要太多研究,代码都是需要带上编译环境来说的,比如我基础测试里面的题目
int  a = 5;
int b = (++a) + (a++);
输出a,b的值,不同编译器就会产生不同答案了。我用Ubuntu和CentOS都是7和13.但是用VS2010就是7和12
回复 使用道具 举报
294250051 发表于 2015-7-13 10:10
= = 亲娘来,楼上咋学的。别误导楼主了。
我来给你解释。
#include

你这样是不是故意避开了问题 假如说给你出这样的题 你认为输出的结果是多少?
回复 使用道具 举报
爱生活爱程序 来自手机 中级黑马 2015-7-23 12:08:41
40#
++i,直接得到的是i+1的值,i++是先取得i的值,然后i加1.
回复 使用道具 举报
不应该是 9  10 9  9吗?
回复 使用道具 举报
怎么也不能是9,8,7,8啊,应该是9,10,9,9才对啊,要么就是9,9,9,9
回复 使用道具 举报
不同系统、编译器等在处理i=++i+++++i++;都会存在一些差异,你这个地方如果是事实的话,有可能是逗号表达式的运算顺序的差异导致的
回复 使用道具 举报
Mal 中级黑马 2015-7-15 21:58:00
36#
9 10 9 9 新版Xcode运行结果
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马