|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 为什么运行结果是这样的?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
570
人关注过本帖
标题:
为什么运行结果是这样的?
只看楼主
加入收藏
书生等待
等 级:
黑侠
威 望:
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
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
2
楼
收藏
得分:5
const 你去掉试试看
DO IT YOURSELF !
2014-09-11 15:34
举报帖子
使用道具
赠送鲜花
书生等待
等 级:
黑侠
威 望:
8
帖 子:280
专家分:689
注 册:2013-2-22
第
3
楼
收藏
得分:0
回复 2 楼 wp231957
去掉const的话,a和*b的值都会是16,这个题就是问运行结果是什么?然后问const的运行原理
2014-09-11 15:39
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
4
楼
收藏
得分:0
http://baike.baidu.com/subview/1065598/5048428.htm
DO IT YOURSELF !
2014-09-11 15:43
举报帖子
使用道具
赠送鲜花
embed_xuel
等 级:
贵宾
威 望:
58
帖 子:3845
专家分:11385
注 册:2011-9-13
第
5
楼
收藏
得分:20
反汇编一下,可能是编译器聪明的在编译阶段就把cout<<a<<endl;编译成cout<<"7"<<endl;
总有那身价贱的人给作业贴回复完整的代码
2014-09-11 15:44
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
6
楼
收藏
得分: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
等 级:
版主
威 望:
528
帖 子:9029
专家分:54050
注 册:2011-1-18
第
7
楼
收藏
得分:5
未定义行为
2014-09-11 15:54
举报帖子
使用道具
赠送鲜花
wssy213
来 自:湖南
等 级:
贵宾
威 望:
10
帖 子:967
专家分:3703
注 册:2014-6-6
第
8
楼
收藏
得分:5
为什么在C中a的值被改变了?输出结果为16,16,调试环境为C-Free4.0+MinGW2.95
坚持----------------------------------唯一的道路
shit ! ! !
2014-09-11 18:43
举报帖子
使用道具
赠送鲜花
书生等待
等 级:
黑侠
威 望:
8
帖 子:280
专家分:689
注 册:2013-2-22
第
9
楼
收藏
得分:0
回复 5 楼 embed_xuel
我不懂汇编,,,
2014-09-11 18:44
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
10
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
14
1/2页
1
2
快速回复:
为什么运行结果是这样的?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.122509 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved