有符号短整型变成无符号长整型是先拓展位数再变成无符号,还是先变成无符号再拓展位数?

有符号短整型变成无符号长整型是先拓展位数再变成无符号,还是先变成无符号再拓展位数?
例如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

注意,在转换之前,需要先将有符号短整型强制转换为无符号短整型,再将无符号短整型强制转换为无符号长整型。