| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 704 人关注过本帖
标题:赋值表达式类型变化的问题
只看楼主 加入收藏
阿魔密火
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-11-3
收藏
 问题点数:0 回复次数:3 
赋值表达式类型变化的问题
#include<iostream>
using namespace std;
int main()
#include<iostream>
using namespace std;
{
    int a=3,length;
    double b=3;
    length=sizeof(a);
    cout<<"变化前a的存储大小是:"<<length<<endl;
   [it] b=a;[/it]
    length=sizeof(a);
    cout<<"变化后a的存储大小是:"<<length<<endl;
    system("pause");
}

vc2005调试输出结果
变化前a的存储大小是:4
变化后a的存储大小是:4
个人认为,变化后的存储大小是8.[bo]参考人邮版C++第34页“赋值表达式得类型由赋值表达式左值的类型决定,右值表达式要转换为左值表达式。”[/bo]当b=a时a的类型由int变为double,所以我认为变化后a的存储大小是8
搜索更多相关主题的帖子: 赋值 类型 表达 
2008-11-04 23:50
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
这是对赋值概念的理解错误,赋值并不能改变右值变量(单目操作符除外),只是将右值的量以左值的类型转换后,赋值给左值,所以右值并没有变化.
从汇编上看,是先把a的值传给寄存器,再从寄存器上传给b,所以寄存器在这里是一个中间量,而类型转换的是中间量而不是a .
2008-11-05 01:41
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
在把a隐式转换赋给b时 是创建一个临时变量的 这个并不影响 a的类型
2008-11-05 10:41
阿魔密火
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-11-3
收藏
得分:0 
受用
感谢楼上两位
2008-11-05 16:33
快速回复:赋值表达式类型变化的问题
数据加载中...
 
   



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

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