c - 在C中将int转换为short

标签 c int short

我有:

int a = 2147483647;
short b = (short)a;

我得到b = -1,而我希望int32可以转换为int16(short)。我希望看到一些值和而不是 -1

请有人帮助我。

最佳答案

您的int A大于short的大小。将A转换为short时,最左边的位为1,这将表明它为负数。因为您得到-1,所以我想您在所有16位中都得到1,这将为您提供-2 ^ 15 + 2 ^ 14 + 2 ^ 13 ... + 2 ^ 0,这将为您提供-1。简而言之(不需要双关语),如果整数太大,则不能将其转换为短整数。

关于c - 在C中将int转换为short,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63589995/

相关文章:

c - 对未知数量的变量使用 sscanf

c - 运行 C 程序时出现段错误(putchar() 和多维数组指针)

java - Android 和 Java 短裤

java - 将短数组转换为字节数组和将字节数组转换为短数组

c++ - 为什么在将 short[] 转换为 char* 时数组会反转?

c - 函数中的 malloc 变量会发生什么?

c - atoi — 如何识别零和错误之间的区别?

java - 向方法发送动态数量的变量的最佳方法是什么?

c - C语言中日期只能输入一个整数,不能输入年月日

python - 我如何在 python 中将 int16 打包成字节