| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:自增问题
只看楼主 加入收藏
ansf
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-7-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
自增问题
#include <stdio.h>

void main()
{
          int a=3,b;
          b=(++a)+(++a)+(++a);
          printf  ("%d,%d\n",a,b);
}

问:为什么输出的结果是6,16
    不应该是6,18吗?
搜索更多相关主题的帖子: 自增 int printf 输出 结果 
2018-07-26 09:28
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:20 
第一步:运算(++a),得到a等于4
第二步:运算(++a),得到a等于5
第三步:运算(++a)+(++a),具体值为5+5,得到一个值为10
第四步:运算(++a),得到a等于6
第五步:将第三步的值加上第四步的值,得到b等于16

下面给出了类推程序,以便加深你的理解。
程序代码:
#include <stdio.h>

void main()
{
          int a=3,b,c,d,e;
          b=(++a)+(++a);
          a=3;
          c=(++a)+(++a)+(++a);
          a=3;
          d=(++a)+(++a)+(++a)+(++a);
          a=3;
          e=(++a)+(++a)+(++a)+(++a)+(++a);
          printf  ("a=%d,b=%d,c=%d,d=%d,e=%d\n",a,b,c,d,e);
}

126邮箱联系方式:no1xijin@126. com
2018-07-26 09:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
未定义行为
也就是说C标准对此没人任何规定,编译器怎么做都可以。
因此它没有任何必须出现的结果,自然也不会有任何解释。
2018-07-26 10:07
快速回复:自增问题
数据加载中...
 
   



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

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