尝试打印一个无符号长整数,但得到一个不同的数字
Trying to print an unsigned long, but getting a different number
我有一个简单的 C 程序。我正在尝试打印数字 1528108405744583338.
这是我的简单代码;
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long number = 1528108405744583338;
printf("%lu", number );
return 0;
}
当我 运行 这段代码时,在控制台上我得到的输出是 2930885290。这里发生了什么?我在 Dev-C++、C-Free 5.0 环境中尝试过,但在两者中得到了相同的结果。我检查了类似的帖子,并尝试了解决方法,但答案无法帮助我解决问题。谢谢你的回答。
相关值需要 64 位数据类型,而 unsigned long
不一定是 64 位。保证至少为 32 位。因此,如果您的系统对 unsigned long
使用 32 位,您将获得您获得的值,如果它对 unsigned long
使用 64 位,您将获得预期值。
unsigned long long
一定会保持这个值,所以请改用它。
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long long number = 1528108405744583338ULL;
printf("%llu", number );
return 0;
}
我有一个简单的 C 程序。我正在尝试打印数字 1528108405744583338.
这是我的简单代码;
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long number = 1528108405744583338;
printf("%lu", number );
return 0;
}
当我 运行 这段代码时,在控制台上我得到的输出是 2930885290。这里发生了什么?我在 Dev-C++、C-Free 5.0 环境中尝试过,但在两者中得到了相同的结果。我检查了类似的帖子,并尝试了解决方法,但答案无法帮助我解决问题。谢谢你的回答。
相关值需要 64 位数据类型,而 unsigned long
不一定是 64 位。保证至少为 32 位。因此,如果您的系统对 unsigned long
使用 32 位,您将获得您获得的值,如果它对 unsigned long
使用 64 位,您将获得预期值。
unsigned long long
一定会保持这个值,所以请改用它。
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long long number = 1528108405744583338ULL;
printf("%llu", number );
return 0;
}