c - C 程序中的答案不正确,我缺少什么?

标签 c math

下面的C程序是求公式(a+b)^2的值。

#include <stdio.h>
#include <conio.h>
void main()
{
int a ,b , c;
clrscr ();
printf ("\n ENTER THE VALUE OF A AND B:");
scanf("%d %d", &a,&b);
c = a*a + b*b +2*a*b;
printf(" \n THE FINAL RESULT IS = %d ", c);
getche();
}

运行时,当我输入 a 和 b 的值 1 和 88888 时,它给出 -688680271 作为答案:

"输入 A 和 B 的值:1 88888 最终结果是 = -688680271 "

但是答案错了,应该是7901254321,求助。谢谢

最佳答案

您知道 int 通常只有 32 位宽吗?

88888 * 88888 = 7901076544

这已经需要 33 位来表示。你有一个整数溢出。尝试使用 long long int 作为您的类型。

long long int a ,b , c;
// ...
scanf("%lld %lld", &a,&b);
// ...
printf(" \n THE FINAL RESULT IS = %lld ", c);

关于c - C 程序中的答案不正确,我缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23240987/

相关文章:

c - 如何改进我的算法来检测对应于相同分数的数组元素?

java - 我很难从我的 sin x 麦克劳林级数中获得准确的输出

math - 分割贝塞尔曲线

java - 在 Java 中插入积分最快的方法是什么?

java - 向鼠标移动一个点

performance - 如何确定某物是否是 big Oh 函数的一部分?

c - 我应该下载 Linux 版 libxml2 的哪个版本?

c - 我用PolarSSL AES-CBC加密字符串后无法解密

c - Linux C : "Interactive session" with separate read and write named pipes?

rl-rtx 中网页的 c 代码