c - c编译器如何在内部表示无符号整数

标签 c

#include<stdio.h>
int main() 
{
int num=0,num1;
do
{
num++;
num1=num+1;
}while(num1>num);
printf("\nthe largest +ve value int can have is:%d",num);
printf("\nthe largest -ve value int can have is:%d",num1);
}

输出: 最大的 +ve 值 int 可以有:2147483647 最大的 -ve 值 int 可以有:-2147483648

问题是,即使我使用“unsigned int”而不是“int”,结果也是一样的。

最佳答案

那是因为您将其打印为整数 (%d),而不是无符号整数 (%u)。此外,您不需要循环来计算它 - 您可以使用 limits.h:UINT_MAXINT_MAX/INT_MIN

关于c - c编译器如何在内部表示无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190711/

相关文章:

c - 从 C 中的同一个文件中读取 int 和 char

c - 串行端口 IAR 上的 Sprintf 和浮点值

c - #if defined MACRO 是否等同于#ifdef MACRO?

c++ - 不是十六进制值 0xffff?

c - 为什么我的程序要在非闰年中添加额外的一天?

c - 在 win32api 中直接读写硬盘,如 biosdisk 或 ms-dos 中的 absread

c - C 中的有符号和无符号

c - 在 char 设备中,我应该把 ioread 放在哪里?

c - 是否有可能(并且安全)使接受套接字成为非阻塞的?

c - 为什么当在该行上设置断点时我的 Xmega 上的比较可以工作,但在正常运行时却不能?