我有一个简单的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环境中进行了尝试,但在两者中都得到了相同的结果。我检查了类似的帖子,并尝试了解决方法,但是答案无法帮助我解决问题。谢谢您的回答。
答案 0 :(得分:6)
有问题的值需要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;
}