有以下程序: #include <stdio. h> main( ) { unsigned int a; int b=-1; a=b; printf(" % u", a);程序运行后的输出结果是( )。

admin2013-02-23  35

问题 有以下程序:  #include <stdio. h>  main( )  {   unsigned int a;     int b=-1;    a=b;    printf(" % u", a);程序运行后的输出结果是(    )。

选项 A、-1
B、65535
C、32767
D、-32768

答案2

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

最新回复(0)