下面的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/