有符号短整型变成无符号长整型是先拓展位数再变成无符号,还是先变成无符号再拓展位数?
例如short –4321转变成unsigned int类型
要看你是如何变的
假如有2个变量定义如下
short a=-1234;
unsigned int b;
如果你是直接b=a;那么会先拓展,将a变成有符号的int,赋值给b之后再变成无符号数
而如果你是强制转换b=(unsigned int)a;那么会先将a变成无符号数,再在高位补0
C 语言中,将有符号短整型变成无符号长整型,是先将有符号短整型转换为无符号短整型,再拓展为无符号长整型。
例如,下例将有符号短整型 -4321 转换为无符号长整型:
#include <stdio.h>
int main(void) {
short x = -4321;
unsigned int y = (unsigned short) x;
printf("%u\n", y);
return 0;
}
上面的代码将输出:
65515
注意,在转换之前,需要先将有符号短整型强制转换为无符号短整型,再将无符号短整型强制转换为无符号长整型。