| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2427 人关注过本帖
标题:萌新,一个关于a++的问题,晕了!
只看楼主 加入收藏
vplan2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-8-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
萌新,一个关于a++的问题,晕了!
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
   int a=1,b;
    b=a++;
    b=++a;
    a=a+a++;
    printf("a=%d\nb=%d\n",a,b);
   return 0;
}

运行结果 a=7 b=3

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
   int a=1,b;
    b=a++;
    b=++a;
    a=a+b+a++;
    printf("a=%d\nb=%d\n",a,b);
   return 0;
}

运行结果:a=9 b=3  为什么呢?a不是应该等于10吗?
搜索更多相关主题的帖子: include int return 运行 结果 
2018-08-24 22:30
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
a=a+a++;
a=a+b+a++;
只想知道想表达什么,为何一定要写成这样的语句?
2018-08-24 22:43
vplan2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-8-24
收藏
得分:0 
回复 2楼 吹水佬
这是一道题,我想没有实际意义,就是不明白,为什么会有这样的结果,怎么看a都是10啊
2018-08-24 22:50
zhangchm2018
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:32
专家分:129
注 册:2018-8-18
收藏
得分:20 
有一条规则是: 当一个变量多次出现在同一个表达式中,不要对该变量使用递增或递减运算符

另外,我用的VS2012,第二个程序我的结果 a = 10;
不遵循上面的规则,结果因编译器而异。

[此贴子已经被作者于2018-8-25 00:17编辑过]

2018-08-25 00:14
vplan2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-8-24
收藏
得分:0 
回复 4楼 zhangchm2018
谢谢
2018-08-25 00:21
makoki
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-8-23
收藏
得分:0 
a=2

b=a++
c=++a
输出b,c的值,b=3   c=2。
多个变量在同一个表达式当中。
后增得到的结果是增加后的值,
前增得到的结果是增加前的值。
老师刚给我讲过。
有错误的话请谅解。
你可以编个程序验证一下。

2018-09-03 19:58
makoki
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-8-23
收藏
得分:0 
不好意思,下去验证了,两个说反了,a++是增前的值,++a是增后的值。
2018-09-03 21:14
峰哥不是
Rank: 2
等 级:论坛游民
威 望:1
帖 子:28
专家分:75
注 册:2013-11-19
收藏
得分:0 
如果严格来说,第一个结果 a = 6; b = 3;
因为  a ++ 是使用增前的结果;
而 ++ a 是使用 增后的结果;
不用纠结这个,实际使用过程中,都使用()代替了

纸上得来终觉浅,绝知此事要躬行
2018-09-04 09:22
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
a=a+a++;

这段代码是错的
这是未定义行为
结果没有意义

    int a=1,b;
    b=a++; //a++ 求值结果是1 a的值是2
    b=++a; //++a 求值结果是3 a的值是3


https://zh.
2018-09-04 10:12
will丶
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:117
专家分:443
注 册:2015-10-19
收藏
得分:0 
有意思,好像是编译器的问题,我用gcc和g++不同的编译器编译,值是不同的,还有a=a+a+++a;和a=a+a+ ++a这种运算,能编过,但是两者值都不同

腾空类星陨,遥望若花生。
2018-09-05 19:42
快速回复:萌新,一个关于a++的问题,晕了!
数据加载中...
 
   



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

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