【发布时间】:2023-03-15 06:38:02
【问题描述】:
我想打印一个整数类型变量,值为3000000000;
所以我写了下面的代码然后运行它,但是打印的值不正确。我认为变量溢出了。但我不知道为什么。
#include<stdio.h>
int main(void) {
unsigned int num1 = 3000000000;
printf("%d", num1);
}
据我所知,当代码符合 Win32 API 时,无符号整数类型变量的最大值为 (2^32-1 = 4,294,967,296 - 1)。 但是打印出来的值是-1294967296。
我不知道为什么我的代码会发生溢出。
如果有人知道原因,请告诉我:)
最好的问候,
- 我使用 Microsoft Visual Studio 2015 Professional。
【问题讨论】:
-
试试
%u而不是%d。 -
%d用于签名的ints。它将获取它找到的任何值并将其解释为signed int并打印它。试试unsigned int num1 = 0xffffffff; printf("%d", num1);。会更加明显。4294967295=0xffffffff
标签: c integer int overflow unsigned