| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1101 人关注过本帖, 1 人收藏
标题:关于"++"运算符的问题
只看楼主 加入收藏
bingfengX
Rank: 2
等 级:论坛游民
帖 子:29
专家分:40
注 册:2011-12-6
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:12 
关于"++"运算符的问题
#include <stdio.h>
main()
{
  int a=3,b;
  b=(++a)+(++a);
  printf("%d",b);
}
为什么输出的是10 ,而不是 9 呢?谁来祥细说一下。
搜索更多相关主题的帖子: include 
2011-12-06 22:12
xj476248213
Rank: 1
等 级:新手上路
帖 子:31
专家分:3
注 册:2011-11-27
收藏
得分:2 
先进行关于a数值的运算
++a和++a那么a=5
最后简化为b=a+a;
所以b=10
2011-12-06 22:35
bingfengX
Rank: 2
等 级:论坛游民
帖 子:29
专家分:40
注 册:2011-12-6
收藏
得分:0 
可以这样理解,但刚查了资料,有更正规的说法:顺序点问题
2011-12-06 23:04
物极必反
Rank: 2
等 级:论坛游民
帖 子:54
专家分:35
注 册:2011-10-3
收藏
得分:5 
此乃未定义……
2011-12-06 23:50
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:3 
++a,++a,a变成5,
2011-12-07 20:29
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
进行到第一个a++时,a所用内存中值为4,第二个a++时,内存值改为5,算b=++a+(++a)时,可以去掉++号,类似认为b=a+a;那么b就是10啦。可以等价为:a++;a++;b=a+a;
2012-01-01 21:04
fansforever
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-1-1
收藏
得分:0 
其实这个计算还要看系统,有的系统按照从左到右顺序求解,即先执行++a,a变成4,再求解第二个括号的值,相当于4+5=9,而有的先执行++a两次,a变成5,然后执行+,b得10
2012-01-01 21:32
小蝦米
Rank: 2
等 级:论坛游民
帖 子:38
专家分:88
注 册:2011-12-18
收藏
得分:0 
7楼正解
2012-01-01 22:16
greatdyd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-1-6
收藏
得分:0 
++优先级高于+优先级...所以2L正解吧
2012-01-06 08:50
ertok
Rank: 1
来 自:新疆乌鲁木齐市
等 级:新手上路
帖 子:3
专家分:1
注 册:2012-1-4
收藏
得分:0 
这个问题,昨天我才从谭浩强的C程序设计中看到,C语言在计算过程中先扫描了++a,++a,对它们都进行了赋值相加,所以最后得到的是10!

赠人玫瑰,手有余香。
2012-01-06 10:34
快速回复:关于"++"运算符的问题
数据加载中...
 
   



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

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