当前位置:天才代写 > tutorial > C语言/C++ 教程 > C/C++变量在内存中的存储

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

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:394

副标题#e#

在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。


#p#副标题#e#

看下面的代码:

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

输出功效如下:

a和b在内存中的值一致
a和c在内存中的值一致
b和c在内存中的值一致
a = 31
b = 31
c = 49.000000
请按任意键继承. .

 

    关键字:

天才代写-代写联系方式