c - 无符号和有符号 int 的范围

标签 c integer

#include <stdio.h>

int main(int argc, char **args){
 int d=4294967295;
 unsigned e= -1;
 printf("\n%u\n%d\n%d\n%u\n%lu\n",d,d,e,e,sizeof(int));

 return 0;
}

输出:

4294967295
-1
-1
4294967295
4

问题是,如果有符号整数和无符号整数都可以通过应用合适的格式字符串来显示各种整数,那么还需要什么首先未签名

最佳答案

您是对的(在使用二进制补码并具有 32 位整数的机器上)0xFFFFFFFF 显示为 -1%d,但为 4294967295%u

但严格来说,这是未定义的行为。

但是有符号变量和无符号变量之间的真正区别在于它们的算术解释。主要区别是

  • 比较:-1 < 0,但 0 < 4294967295。
  • 乘法和除法。

关于c - 无符号和有符号 int 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34841990/

相关文章:

python - 在 C 和 Python 中循环

c - 为什么这个多线程程序可以工作(而不是崩溃)?

c - 限制线程可以调用哪些函数

java - 如何确保用户仅输入整数类型和大于 0 的整数?

javascript - x|0 如何在 JavaScript 中降低数字?

c - 是否有 LARGEST_INTEGER 宏或类似的东西? (C)

c - 设置一个指针,保留NULL

C程序从数组中打印出LCD数字

php: int() 函数等效于 bigint 类型? (int() 将字符串剪切为 2147483647)

algorithm - 找到第一个大于 N 且与 M 互质的数