C/C++变量在内存中的存储

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

char a;
int b;
int c;
a='1';
b=1;
printf("a = %x \r\n",a);
printf("b = %x\r\n",b);
c=a;
printf("c = %x\r\n",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 \r\n",a);
printf("b = %x \r\n",b);

输出结果是:

a = 31

b = 31

请按任意键继续. . .

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

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

时间: 2024-10-02 10:49:02

C/C++变量在内存中的存储的相关文章

浅析C/C++变量在内存中的分布_C 语言

C/C++变量在内存中的分布在笔试时经常考到,虽然简单,但也容易忘记,因此在这作个总结,以加深印象. 先写一个测试程序: 复制代码 代码如下: #include <stdio.h>  #include <malloc.h>  int g_i = 100;  int g_j = 200;  int g_k, g_h;  int main()  {      const int MAXN = 100;      int *p = (int*)malloc(MAXN * sizeof(i

C/C++的浮点数在内存中的存储方式分析及实例_C 语言

C/C++的浮点数在内存中的存储方式分析 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中,存放方式为  10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式.但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法.        在二进制科学表示法中,S=M*2^N 主

深入C/C++浮点数在内存中的存储方式详解_C 语言

任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中,存放方式为  10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式.但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法.在二进制科学表示法中,S=M*2^N 主要由三部分构成:符号位+阶码(N)+尾数(M).对于flo

Java千百问_06数据结构(018)_多维数组如何储存在内存中

1.多维数组如何储存在内存中 了解一维数组如何储存看这里:java数组如何存储在内存中 从底层来看,数组元素可以存放引用类型,数组也是引用类型的一种.也就是说,在数组元素的内部还可以包含数组(如int[][] numbers = new int[length][]),即二维数组可当作一维数组(数组长度为length)来处理. 了解数组和普通引用对象在内存中的区别看这里:数组和普通对象的引用变量有什么区别 由此我们得出结论: 任何多维数组(维度为n,n>1)都可以当作一维数组,其数组元素为n-1维

Java千百问_06数据结构(016)_引用类型数组在内存中如何储存

1.存放基本类型数组在内存中如何储存 Java的数组中可以存放引用类型.  存放引用类型的内存分布相比存放基本类型相对复杂.来看一段存储基本类型的程序:  了解什么是数组看这里:java中的数组是什么  了解数组在内存中的储存看这里:java数组如何存储在内存中 public class TestPrimitiveArray { public static void main(String[] args) { //1.定义数组 int[] numbers; //2.分配内存空间 numbers

c语言中浮点数存储方式

问题描述 c语言中浮点数存储方式 浮点数0.0与1.0*2^-127在内存中怎么存储-用IEEE的标准 不是都成为0了 解决方案 C语言中浮点数在内存中的存储方式浮点数在内存中的存储方式(含c语言实例)浮点数在计算机中存储方式 解决方案二: http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html~ 这篇文章讲的蛮细致的~

cuda-内存位置异常,怎么查看内存位置,以及内存中的信息

问题描述 内存位置异常,怎么查看内存位置,以及内存中的信息 ipiv=(int*)malloc(sizeof(int)*count_1); A=(float*)malloc(sizeof(float)*b*count_1); Ta=(float*)malloc(sizeof(float)*count_1*count_1); invTa=(float*)malloc(sizeof(float)*count_1*count_1); det=(float*)malloc(sizeof(float)*1

java中static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢

问题描述 java中static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢 栈内存:局部变量和对象的引用变量: 堆内存:对象: 以上是我所知道的,那么static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢 解决方案 static和普通方法都存在堆内存中,堆内存有个永久区permgen,这里面会存类信息. 所以不断的加载类或jar包可能出现permgen oome的错误. static是在堆内存的数据区. 解决方案二: java stat

Java千百问_06数据结构(014)_java数组如何存储在内存中

1.数组的内存空间是何时分配的 Java中的数组是用来存储同一种数据类型的数据结构,一旦初始化完成,即所占的空间就已固定下来,初始化的过程就是分配对应内存空间的过程.即使某个元素被清空,但其所在空间仍然保留,因此数组长度将不能被改变.  了解什么是数组看这里:java中的数组是什么  当仅定义一个数组变量(int[] numbers)时,该变量还未指向任何有效的内存,因此不能指定数组的长度,只有对数组进行初始化(为数组元素分配内存空间)后才可以使用.  数组初始化分为静态初始化(在定义时就指定数