我想打印出一个整数类型变量,其值为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。
我不知道为什么我的代码会发生溢出。
如果有人知道原因,请告诉我:)
最诚挚的问候,
答案 0 :(得分:1)
使用%u
而不是%d
对于printf
:
%d
由以下人员使用:
d,i将int参数转换为带符号的十进制表示法。 精度(如果有)给出最小位数 必须出现;如果转换后的值需要较少的数字,则 在左边用零填充。默认精度为1。 当以明确的精度0打印0时,输出为 空的。
%u
由以下人员使用:
o,u,x,X unsigned int参数将转换为unsigned八进制(o), 无符号十进制(u)或无符号十六进制(x和X) tion。字母abcdef用于x转换;让 ABCDEF TER用于X转换。精度,如果 任何,给出必须出现的最小位数;如果 转换后的值需要较少的数字,将其填充在 左为零。默认精度为1。当0为 以明确的精度0打印,输出为空。