我正在准备涉及 C 的考试,但即使在转换变量时我也会遇到变量错误。代码是从教授给我们的PowerPoint中复制的。
我正在浏览编写此程序的选角部分:
#include <stdio.h>
int main()
{
long i;
int j = 100000;
i = (long)j * j;
printf("%li", i);
}
我不知道为什么,但这仍然给我输出“1410065408”,这当然意味着它是错误的。 我什至尝试转换这两个变量:
i = (long)j * (long)j;
printf("%li", i);
我现在不知道如何移动,先感谢您的帮助
强制转换仅在
long
恰好是 64 位的情况下保存情况,但通常情况并非如此。
如果是 32 位,则有符号
long
的最大值为 231-1 = 2.147 * 109.解决方案是使用
int64_t
的便携式 stdint.h
代替:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h> // for printing stdint.h types
int main()
{
int64_t i;
int j = 100000;
i = (int64_t)j * j;
printf("%" PRIi64, i);
}