| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 840 人关注过本帖
标题:从C++想到的数据结构
取消只看楼主 加入收藏
阿魔密火
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-11-3
收藏
 问题点数:0 回复次数:2 
从C++想到的数据结构
编程中常有类型转换,其内部的存储结构是怎么变化的?
如(int型变为long型)字宽从4变为8,系统内部是如何分配存储空间的?
列举如下例子
#include <iostream>
using namespace std;
int main()
{
  int a=4
  long b=4
  a=b
  return 0
 }
系统内部先给a分配四个字宽的存储空间,一个确定的存储地址,
之后又给b分配一个八个字宽的存储空间,一个确定的存储地址,
之后将b赋给a,此时a自动转换成long,
[bo]请问,此时a的存储地址,存储空间会是怎样的变化?[/bo]
 (水平有限,请高人指正)
搜索更多相关主题的帖子: 数据结构 
2008-11-04 13:02
阿魔密火
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-11-3
收藏
得分:0 
[bo][un]sunkaidong[/un] 在 2008-11-4 13:11 的发言:[/bo]

应该只截取低4位保存


是int型变为long型
从4位字宽8位字宽,是增长了。
2008-11-04 22:53
阿魔密火
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-11-3
收藏
得分:0 
[bo][un]newyj[/un] 在 2008-11-5 10:45 的发言:[/bo]

ls
为什么是int类型转换成long类型 ?
这个和 a+b的隐式转换 是不一样的 这个是把位数小的转换成位数大的
而 赋值 并不是这个样子的


我也发现了点错误
帖子改下
[bo]赋值表达式类型变化的问题
#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;
    b=a;
    length=sizeof(a);
    cout<<"变化后a的存储大小是:"<<length<<endl;
    system("pause");
}

vc2005调试输出结果
变化前a的存储大小是:4
变化后a的存储大小是:4
个人认为,变化后的存储大小是8.参考人邮版C++第34页“[un]赋值表达式得类型由赋值表达式左值的类型决定,右值表达式要转换为左值表达式[/un]。”当b=a时a的类型由int变为double,所以我认为变化后a的存储大小是8[/bo]

请谢谢你的关注
2008-11-09 12:02
快速回复:从C++想到的数据结构
数据加载中...
 
   



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

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