单选题
考虑下列C语言程序代码:
int i=65535;
short si=short(i);
int j=si;
假定上述程序段在某32位机器上执行,sizeof(int)=4,则变量i、si和j的值分别是______。
A.65535、65535、65535
B.65535、1、-1
C.65535、-1、-1
D.65535、-1、1
A
B
C
D
【正确答案】
C
【答案解析】
[解析] 在一台32位机器上执行上述代码段时,i为32位补码表示的定点整数,第2行要求强行将一个32位带符号数截断为16位带符号整数,65535的32位补码表示为0000 FFFFH,截断为16位后变成FFFFH,在16位补码表示中,它表示-1,因此si的值为-1。 再将该16位带符号整数扩展(扩展不能改变数值大小,即j还应该是-1)为32位时,就变成了FFFF FFFFH。因此i的值也为-1。 综上,本题选择C。
提交答案
关闭