| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 549 人关注过本帖
标题:初学者请教自增自减的相关问题、
只看楼主 加入收藏
钟离文扬
Rank: 1
来 自:山东泰安
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-4-11
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
初学者请教自增自减的相关问题、
i=5;
a=(++i)+(++i)+(++i)+(++i)+(i++);
结果是:a=40;
        i=9;
求解释、麻烦大侠讲的详细一点、、
2012-04-11 20:18
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:4 
()里面的先计算,所以a=6+7+8+9+9;i=10

运行一下下面程序你会直观看到值的变化:
程序代码:
#include <stdio.h>
#include <stdlib.h>
main()
{
int    i=5,a,a1,a2,a3,a4,a5;
a=(a1=(++i))+(a2=(++i))+(a3=(++i))+(a4=(++i))+(a5=(i++));
printf("i=%d,a=%d\na1=%d,a2=%d,a3=%d,a4=%d,a5=%d\n",i,a,a1,a2,a3,a4,a5);
}
2012-04-11 22:11
a935245228
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:45
专家分:56
注 册:2012-3-12
收藏
得分:0 
楼上正解
2012-04-11 22:43
liuxingar
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-4-1
收藏
得分:7 
给你个建议在a=(++i)+(++i)+(++i)+(++i)+(i++);每个括号后先后加//,看每一个计算的结果
a=(++i)时 i = 6, a = 6
a=(++i)+(++i)  i = 7, a = 14
.
.
.
可以猜测,遇到第一个自加运算i=6,之后遇到‘+’,而加号右边自加运算优先级较高,则先进行自加运算,i=7,a=7+7=14;后面就是+8+9+9=40,i=10

[ 本帖最后由 liuxingar 于 2012-4-11 22:51 编辑 ]
2012-04-11 22:44
lengwuqin
Rank: 2
等 级:论坛游民
帖 子:5
专家分:29
注 册:2012-4-11
收藏
得分:1 
这个和编译器有关,你如果想知道具体的过程,可以把.c编译成汇编文件,再看汇编文件就知道具体是怎么执行的了!
2012-04-11 22:51
蓝xuan
Rank: 4
等 级:业余侠客
帖 子:81
专家分:211
注 册:2012-3-31
收藏
得分:2 
支持4楼,可以分解成多个步骤,然后再用编译器一步一步调试就非常直观清楚了。。。。试试哦
2012-04-11 23:10
sunlang1234
Rank: 2
等 级:论坛游民
帖 子:47
专家分:77
注 册:2012-2-24
收藏
得分:0 
四楼正解。
2012-04-11 23:13
迷上编程
Rank: 2
等 级:论坛游民
帖 子:140
专家分:86
注 册:2012-3-11
收藏
得分:1 
这是关于i++与++i区别的问题,此题关键在于最后一个i++,他是先将i的值给表达式再加一,a=6+7+8+9+9;a=39,i=10;注意最后一个9就是i++的结果,在表达式中是9,最后执行自加一就是10了。
2012-04-11 23:19
wyc1023
Rank: 1
等 级:新手上路
帖 子:9
专家分:6
注 册:2012-3-16
收藏
得分:5 
刚学的老师总结了一句话,你理解哈,就能算了:
++在前,先自身加一再做别人要求他做的,
++在后,先做别人要求他做的再自身加一。
你这题,第一个++i时先自身加一再去求和,第二,三,四个一样,到第四个时,i自身都已经是9了,
在第五个时,先去求和再自身加一,所以实际上就是a=6+7+8+9+9,i=10
不过我不知道为什么等40,而不是39
2012-04-11 23:33
wyc1023
Rank: 1
等 级:新手上路
帖 子:9
专家分:6
注 册:2012-3-16
收藏
得分:0 
回复 4楼 liuxingar
为什么第二次就是7+7,如果那样,又为什么,第三次的时候不是8+8+8,第四次9+9+9+9呢?不明白给解释哈嘛
2012-04-11 23:41
快速回复:初学者请教自增自减的相关问题、
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069688 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved