我出生在现代世界,所以我不经常需要处理这类事情,但有人可以解释如何在以下代码中获得正确的数字.这是许多人的一次尝试:
#define X 2527
#define Y 2463
#define Z 3072
main()
{
long int c = X*Y*Z;
printf("%ld",c);
}
Run Code Online (Sandbox Code Playgroud)
我只是想打印一个长整数,但它总是打印错误的结果.我得到整数溢出 - 如果是这样我怎么能防止它们?或者它是我选择的printf格式化程序?
溢出是可以的,因为您尝试将34位数写入32位变量(long int).
使用long long int和%lld格式字符串.
#define X 2527LL
#define Y 2463LL
#define Z 3072LL
main()
{
long long int c = X*Y*Z;
printf("%lld",c);
}
Run Code Online (Sandbox Code Playgroud)