好的,我知道有很多关于 pow 函数并将其结果转换为 int 的问题,但我找不到这个有点具体的问题的答案。
好的,这是 C 代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i = 5;
int j = 2;
double d1 = pow(i,j);
double d2 = pow(5,2);
int i1 = (int)d1;
int i2 = (int)d2;
int i3 = (int)pow(i,j);
int i4 = (int)pow(5,2);
printf("%d %d %d %d",i1,i2,i3,i4);
return 0;
}
这是输出:“25 25 24 25”。请注意,只有在 pow 的参数不是文字的第三种情况下,我们才会得到错误的结果,这可能是由舍入错误引起的。没有明确的强制转换也会发生同样的事情。有人可以解释这四种情况会发生什么吗?
我在 Windows 7 中使用 CodeBlocks,以及随附的 MinGW gcc 编译器。