大家好,我正在用 C99 做我的家庭作业基本内容,但是有一些事情让我不安,请在回答之前尝试我的代码。 问题是,当我尝试数字 5、10、15 时,答案不正确,它始终是正确的值 - 1。
有人可以解释一下这是为什么吗?
#include <stdio.h>
#include <math.h>
int main() {
int P, x;
printf("Calculons le polynome P(x)\n");
printf("Entrer la valeur de x :");
scanf("%d", &x);
P = pow(x,2);
printf("%d", P);
return 0;
}
最佳答案
math.h
中函数 pow 的签名为
double pow(double x, double y);
由于您传递了两个整数并将结果分配给一个整数,我的猜测是,由于舍入错误和小数部分的截断,您会得到错误的结果(如果您将 24.999999 分配给整数变量,您将得到 24)。此外,您还需要始终检查 scanf 的返回值。而且输出需要以换行符结束,否则结果可能无法显示。
这是更正后的版本:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double P, x;
int n;
printf("Calculons le polynome P(x)\n");
printf("Entrer la valeur de x: ");
n = scanf("%lf", &x);
if (n == 1) {
P = pow(x, 2.0);
printf("%.2f\n", P);
} else {
fprintf(stderr, "Entrée invalide\n");
exit(EXIT_FAILURE);
}
return 0;
}
关于c - 为什么 C 上的 Power int 不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44266715/