我想打印出一个整数类型变量,其值为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。
我不知道为什么我的代码中出现溢出。
如果有人知道原因,请告诉我:)
最好的祝福,
使用%u
而不是%d
对于printf
:
%d
用于:
d,i int参数转换为带符号的十进制表示法。精度(如果有)给出必须出现的最小位数;如果转换后的值需要较少的数字,则在左侧用零填充。默认精度为1.当使用显式精度0打印0时,输出为空。
%u
用于:
o,u,x,X unsigned int参数转换为无符号八进制(o),无符号十进制(u)或无符号十六进制(x和X)符号。字母abcdef用于x次转换;字母ABCDEF用于X转换。精度(如果有)给出必须出现的最小位数;如果转换后的值需要较少的数字,则在左侧用零填充。默认精度为1.当使用显式精度0打印0时,输出为空。