| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1433 人关注过本帖
标题:求助:关于C语言中自增的一个问题
取消只看楼主 加入收藏
gahddd
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
 问题点数:0 回复次数:5 
求助:关于C语言中自增的一个问题
#include "stdio.h"
main()
{
int a=4,b;
b=(++a)+(++a)+(++a);
printf("%d\n",b);
}
这段程序在VC中得到结果为19,在TC中结果为21,在TC中的结果我能算出来,但在VC中得到19就不懂了。

忘哪位高手 知道的给个答案,谢谢。
搜索更多相关主题的帖子: C语言 
2007-10-23 21:30
gahddd
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
这道题是我今天上课时一个学生问我的,我也跟他说了这种用法是不提倡使用的,就算是应付过去了,但是我就想知道在VC中怎么能算出来得19呢??21很好理解,但19就有点令人费解了,大家可以互相探讨一下。

俺从乡下来,俺啥也不懂。
2007-10-23 21:47
gahddd
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
嗯,我也是这样想的,因为如果把程序的b=(++a)+(++a)+(++a);改成b=(++a)+(++a);后得到的结果就是12。但是就是不知道为什么会这样算?

俺从乡下来,俺啥也不懂。
2007-10-23 21:54
gahddd
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
嗯,我昨天晚上又想了想,觉得也是这样的,谢谢各位。

俺从乡下来,俺啥也不懂。
2007-10-24 08:07
gahddd
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
21应该很好理解呀,++优先级高于+ ,所以先算三个++a ,加完后a的值变成7 ,三个7相加得21。

俺从乡下来,俺啥也不懂。
2007-10-25 21:49
gahddd
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
以下是引用psp0375在2007-10-26 9:28:07的发言:

19估计不可能,这个语句: b=(++a)+(++a)+(++a);
有两种解释:(1) "a"在实现自加之后,进行加法运算;(++优先于+)结果是21
(2)"a"在括号内自加同时参与后面运算;结果是18


嗯,我当时也是这么想的,21和18我都能理解,但是在VC上运行的结果就是19,所以才弄不懂了。


俺从乡下来,俺啥也不懂。
2007-10-26 19:57
快速回复:求助:关于C语言中自增的一个问题
数据加载中...
 
   



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

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