在 C 语言中,短整型(short int)包含16个位(bit),其中第一个位(bit)表示数值是正数或负数。我有一个以下的 C 程序:
int main() {
short int v;
unsigned short int uv;
v = -20000;
uv = v;
printf("\nuv = %hu\n", uv);
return 0;
}
因为变量v的值是负数,所以我知道变量的第一位是1。因此,我期望程序的输出结果等于uv=52,768,因为20,000 + (2^15) = 52,768。
但实际上,输出结果却是uv=45,536。我的逻辑哪里出了问题?