对于一个 16 位的整型变量,你能给这个变量赋值 72368 的整数值吗?
For a 16-bit integer variable, can you assign the variable with an integer value of 72368?
你能详细解释一下吗?
否,因为您可以用 16 位编码的最大值是 65535
您可以尝试,但如果赋值成功,它不会存储您的原始数字的全部,因为要准确表示它需要超过 16 位。
16位整数中的最高位是第215位。 2 的十五次方是 32768。将 16 位设置为全 1 将产生 65535 (32768 * 2 - 1),如果整数是无符号的,那么这是您可以可靠分配的最大数字。
无论如何,这很容易测试:
#include <stdio.h>
int main(void) {
unsigned short i = 72368;
printf("%d\n", i); // 6832
return 0;
}
请注意,72368 被解释为 int
,并且隐式转换为 unsigned short
,尽管编译器会警告您。 Try it online.
你能详细解释一下吗?
否,因为您可以用 16 位编码的最大值是 65535
您可以尝试,但如果赋值成功,它不会存储您的原始数字的全部,因为要准确表示它需要超过 16 位。
16位整数中的最高位是第215位。 2 的十五次方是 32768。将 16 位设置为全 1 将产生 65535 (32768 * 2 - 1),如果整数是无符号的,那么这是您可以可靠分配的最大数字。
无论如何,这很容易测试:
#include <stdio.h>
int main(void) {
unsigned short i = 72368;
printf("%d\n", i); // 6832
return 0;
}
请注意,72368 被解释为 int
,并且隐式转换为 unsigned short
,尽管编译器会警告您。 Try it online.