#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,i,ele;
n=5;
ele=pow(n,2);
printf("%d",ele);
return 0;
}
输出是24
。
我在Code::Blocks中使用GNU/GCC。
发生了什么?
我知道pow
函数返回一个double
,但25
适合int类型,所以为什么这段代码打印出24
而不是25
?如果n=4; n=6; n=3; n=2;
,那么这段代码可以正常工作,但用五则无法正常工作。
pow
函数的返回值存储在float
或double
变量中,然后将其强制转换为int
。看看是否会产生24
或正确答案25
。 - 0xF1n=5
的情况下执行printf("%.25lf\n", pow(n,2));
的输出结果吗? - Mohit Jainpow(n,2)
应该返回准确的结果。 C语言并没有明确指定pow()
函数需要有多好。 - chux - Reinstate Monica