在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