- 第一题:涉及知识点(整型在内存中的存储)
- 第二题:涉及知识点(大小端存储)
解析:
char类型的取值范围是-127~128;
unsigned char类型的取值范围是:0~255;
所以题目中:unsigned char a
与unsigned char b
是放得下200与100的。
a的二进制为:11001000;
b的二进制为:01100100;
a的补码为:00000000000000000000000011001000;
b的补码为:00000000000000000000000001100100;
a+b补码为:0000000000000000000000100101100;
以%d
的形式打印a+b,就会打印出 上面计算出a+b的补码转换成原码的结果(正数的原码=反码=补码);
所以a+b以%d
打印出来的应该是300
;
题目中c=a+b,由于c的类型是unsigned char
,所以a+b的补码放到c会发生截断,
所以截断后的c的补码为00101100;
以%d
的形式打印:c进行整型提升:00000000000000000000000000101100
所以c以%d
的形式打印出来的应该是:44
在编译器中验证结果:
大端(存储)模式,是指数据的低位字节保存在内存的高地址中,而数据的高位字节,保存在内存的低地址中;
小端(存储)模式,是指数据的低位字节保存在内存的低地址中,而数据的高位字节,,保存在内存的高地址中;
题目中unsigned int a= 0x1234;
int是4个字节,补齐a应是0x 00 00 12 34
:
把a强制类型转换成unsigned char
后,由于int–>char发生截断:
所以最后答案选A
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享题目:【C语言练习题】数据在内存中的存储-创新互联
文章源于:http://lswzjz.com/article/cojgec.html