36、考虑以下C语言代码 short si=-8196 unsigned short usi=si 执行上述程序段后usi的值是 A、 8196 B、 34572 C、 57339 D、 57340
时间: 2024-05-22 14:13:17 浏览: 213
D、57340
解析:
si 的值为 -8196,其补码为 1000 0000 0000 0100。
unsigned short 取值范围是 0~65535,因此其二进制表示为 0000 0000 0000 0000 ~ 1111 1111 1111 1111。
当将 si 赋值给 usi 时,会进行强制类型转换,si 的补码会直接存储到 usi 中,此时 usi 的值为 1111 1111 1000 0100,即 57340。
相关问题
考虑以下C语言代码: unsigned short usi = 65535; short si = usi; 执行上述程序段后,si的值是____,为什么?
执行上述程序段后,si的值是-1。这是因为在C语言中,当将一个无符号数转换为有符号数时,如果无符号数的值超过了有符号数所能表示的最大值,那么结果是未定义的。在这种情况下,实际结果取决于编译器和操作系统的具体实现。在这个例子中,65535是一个无符号的16位整数,其值超过了有符号的16位整数所能表示的最大值32767,因此其转换结果是未定义的。在实际情况中,常见的做法是将无符号数的二进制表示直接转换为相应的有符号数的二进制表示,因此最终结果会是-1。
char c=-1和unsigned short b=1谁更大
char c=-1 和 unsigned short b=1 是不同类型的变量,无法直接比较大小。但是,unsigned short 的取值范围比 char 更大,因此 unsigned short b=1 更大。
阅读全文