|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ VC++ 6.0中为什么结果是14?????
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1144
人关注过本帖
标题:
VC++ 6.0中为什么结果是14?????
只看楼主
加入收藏
陈志文
等 级:
论坛游民
帖 子:17
专家分:10
注 册:2014-10-13
结帖率:
50%
楼主
收藏
问题点数:0 回复次数:10
VC++ 6.0中为什么结果是14?????
#include <iostream>
int main()
{
using namespace std;
int x=0;
int y=4+(++x)+6+(++x);
cout<<y<<endl;
cout<<x<<endl;
return 0;
}
搜索更多相关主题的帖子:
include
2015-05-12 15:24
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9031
专家分:54061
注 册:2011-1-18
第
2
楼
收藏
得分:0
不要研究『未定义行为』,这是无意义的。
2015-05-12 15:39
举报帖子
使用道具
赠送鲜花
yangfrancis
等 级:
贵宾
威 望:
141
帖 子:1510
专家分:7661
注 册:2014-5-19
第
3
楼
收藏
得分:0
真的很奇怪,DEVC++运行出来就是13. 这种属于编译器自身的问题,谁也说不清.但你把它拆成几条语句就是13了
using namespace std;
int x=0;
++x;
int y=4+(x);
++x;
y=y+6+(x);
cout<<y<<endl;
cout<<x<<endl;
return 0;
2015-05-12 16:45
举报帖子
使用道具
赠送鲜花
hzj199603
来 自:南京
等 级:
论坛游民
帖 子:18
专家分:32
注 册:2015-3-29
第
4
楼
收藏
得分:0
回复 楼主 陈志文
DEV上运行的是13啊,
2015-05-12 18:18
举报帖子
使用道具
赠送鲜花
ding13743188
等 级:
新手上路
帖 子:2
专家分:0
注 册:2015-5-12
第
5
楼
收藏
得分:0
回复 3楼 yangfrancis
也有可能和编译器自身有关系。拆开以后是先对x+一次。然后使用。然后再使x+。再使用。不拆开的话。是x先自加2次才使用的。然后相当与4+2+6+2.不知道对不对。个人见解
2015-05-12 20:01
举报帖子
使用道具
赠送鲜花
陈志文
等 级:
论坛游民
帖 子:17
专家分:10
注 册:2014-10-13
第
6
楼
收藏
得分:0
大家的回复很有帮助,谢谢,没有分了,抱歉!
2015-05-12 21:21
举报帖子
使用道具
赠送鲜花
旗开得胜LK
等 级:
新手上路
帖 子:13
专家分:2
注 册:2015-5-24
第
7
楼
收藏
得分:0
因为是先增加x的值后计算表达式,计算表达式的时候x的值为2,所以4+2+6+2=14
2015-05-24 21:47
举报帖子
使用道具
赠送鲜花
文心边城
等 级:
论坛游民
威 望:
2
帖 子:98
专家分:67
注 册:2005-12-13
第
8
楼
收藏
得分:0
我来做权威解释:
1,结果与编译环境有关,VC++下是14,2; gcc 下是13,2;
总结:x的值是一样,不同的是y。
2,我们将y=4+(++x)+6+(++x);表示成y = f1()+f2()+f3()+f4();
在VC++下, f2()=(++c) 与 f4() = (++c) 是同时运算的,0作为表达式中所有的x的值,因此经自增两次就得到2,f2()=f4()=2;
y=4+2+6+2=14,x=2
[
本帖最后由 文心边城 于 2015-5-26 06:09 编辑
]
会写c c++ java php JS AS vb python
2015-05-24 23:38
举报帖子
使用道具
赠送鲜花
旗开得胜LK
等 级:
新手上路
帖 子:13
专家分:2
注 册:2015-5-24
第
9
楼
收藏
得分:0
回复 8楼 文心边城
大神,为什么在gcc 下Y的值是13
2015-05-25 19:42
举报帖子
使用道具
赠送鲜花
wmf2014
等 级:
贵宾
威 望:
216
帖 子:2039
专家分:11273
注 册:2014-12-6
第
10
楼
收藏
得分:0
个人感觉可能和编译器采用的优化方式有关:如果本来就认为++优先级大于+,优化运算时就不需要考虑括号的话,则顺序往后运算,运算结果为13,如果编译器认为括号优先级最高,必须先做括号,那么两个括号做完后x=2,再做其他运算则结果为14.
能编个毛线衣吗?
2015-05-25 21:52
举报帖子
使用道具
赠送鲜花
11
1/2页
1
2
快速回复:
VC++ 6.0中为什么结果是14?????
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.049897 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved