| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 570 人关注过本帖
标题:为什么运行结果是这样的?
只看楼主 加入收藏
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
结帖率:100%
收藏
已结贴  问题点数:40 回复次数:13 
为什么运行结果是这样的?
#include<iostream>
using namespace std;
int main()
{

    const int a=7;
    int *b=(int *)&a;
    *b=16;
    cout<<*b<<endl;
    cout<<a<<endl;
    return 0;
}
调试环境为vs2010
调试结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

打印结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

调试结果中a已经是16,而打印出以后还是7
2014-09-11 15:21
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
const 你去掉试试看

DO IT YOURSELF !
2014-09-11 15:34
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 2 楼 wp231957
去掉const的话,a和*b的值都会是16,这个题就是问运行结果是什么?然后问const的运行原理
2014-09-11 15:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
http://baike.baidu.com/subview/1065598/5048428.htm

DO IT YOURSELF !
2014-09-11 15:43
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:20 
反汇编一下,可能是编译器聪明的在编译阶段就把cout<<a<<endl;编译成cout<<"7"<<endl;

总有那身价贱的人给作业贴回复完整的代码
2014-09-11 15:44
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用embed_xuel在2014-9-11 15:44:08的发言:

反汇编一下,可能是编译器聪明的在编译阶段就把cout<<a<<endl;编译成cout<<"7"<<endl;




     我刚才看了一下  没有const 的反汇编代码 一切都是正常的  可以通过取地址的方法去改变一个变量值
                       有const 的反汇编代码 则不是这样做的  在需要输出 a 的之前 直接把 数字 7 入栈

DO IT YOURSELF !
2014-09-11 15:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:5 
未定义行为
2014-09-11 15:54
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:5 
为什么在C中a的值被改变了?输出结果为16,16,调试环境为C-Free4.0+MinGW2.95

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-11 18:43
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 5 楼 embed_xuel
我不懂汇编,,,
2014-09-11 18:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
以下是引用wssy213在2014-9-11 18:43:35的发言:

为什么在C中a的值被改变了?输出结果为16,16,调试环境为C-Free4.0+MinGW2.95


未定義行爲,不要問爲什麽,也沒明確答案。樓主又是那家公司的破考題,這種公司不去也罷。

[ 本帖最后由 TonyDeng 于 2014-9-11 19:23 编辑 ]

授人以渔,不授人以鱼。
2014-09-11 18:45
快速回复:为什么运行结果是这样的?
数据加载中...
 
   



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

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