A-A+

有以下程序: #include <stdio. h> main() { unsigned i

2022-08-06 06:50:34 问答库 阅读 177 次

问题详情

有以下程序: #include <stdio. h> main() { unsigned int a; int b=-1; a=b; printf(" % u", a);程序运行后的输出结果是()。
A.-1
B.65535
C.32767
D.-32768请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:B
解析:不同类型的对象进行混合运算时,需要进行数据的类型转换,其转换方向为int→unsigned→long→double。本题程序中的变量b为int型,需要转换为unsigned型。int型变量的数值范围为-32768~32767,最高位为符号位,而unsigned所表示的数的范围为0~65535,它的最高位为数值位。由于内存中是以补码形式存储数据的,所以整型数-1在内存中表示为16个1,最高位的1表示符号为负,将它转换为unsigned类型,即将原符号位的1看成数值,所以得到16个数值1,即65535。

考点:程序