当前位置:主页   - 电脑 - 程序设计 - C/C++
C/C++变量在内存中的存储
来源:网络   作者:   更新时间:2012-02-07
收藏此页】    【字号    】    【打印】    【关闭

  在C++语言中,有如下代码:

char a;
int b;
int c;
a='1';
b=1;
printf("a = %x rn",a);
printf("b = %xrn",b);
c=a;
printf("c = %xrn",c);

  输出的结果是

a = 31
b = 1
c = 31

  请按任意键继续. . .

  这里 int型是4Byte char型是1Byet。

  a=‘1’ 这条语句执行后,会在内存中分配1个字节大小的内存空间,在这个空间里存储的内容是0x 31,即字符1的ASC码的16进制表示。

  b=1 这条语句执行后会在内存中分配一个4个字节大小的空间,在这个空间内存储的内容是0x 00000001。

  c= a ; a的长度小于c的长度因此赋值不会产生数据的丢失。

  看如下代码:

char a;
int b;
a=49;
b=49;
printf("a = %x rn",a);
printf("b = %x rn",b);

  输出结果是:

  a = 31

  b = 31

  请按任意键继续. . .

  这里 a =49; 49 c++编译器默认为10进制,49的16进制表示为 0x31 那么在a所在的内存中存放的依然是0x 31。

  同理b在内存中存放的也是0x31。

  看下面的代码:

char a;
int b;
a=49;
b=49;
printf("a = %x rn",a);
printf("b = %c rn",b);

  输出的内容是:

  a = 31

  b = 1

  请按任意键继续. . .

  这里b输出的是1,因为b是按照字符型来输出的。

  通过以上3个例子要说明的是,要看淡变量类型,不要被过多的变量类型搞的晕头转向,看问题要看本质。不同的变量类型反映在内存中,其实只是开辟的内存大小有区别甚至内存大小都一样,关键还是要看内存空间存储的二进制码是什么。两个变量只要是在内存中存储的二进制码一样 无论这两个变量是什么类型,我们都可以认为他们是相等的。

  看如下代码:

char a;
int b;
float c;
a=49;
b=49;
c=49;
if(a==b)
{
printf("a和b在内存中的值一致n");
}
if(a==c)
{
printf("a和c在内存中的值一致n");
}
if(b==c)
{
printf("b和c在内存中的值一致n");
}
printf("a = %x rn",a);
printf("b = %x rn",b);
printf("c = %f rn",c);
输出结果如下:

a和b在内存中的值一致
a和c在内存中的值一致
b和c在内存中的值一致
a = 31
b = 31
c = 49.000000

  请按任意键继续. . .

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明