我尝试实现以下计算:
#include <stdio.h>
#include <math.h>
int main(){
float sum = 0;
int c = -4;
float x1 = 136.67;
float x2 = 2.38;
sum = c / (pow(abs(x1 - x2), 2));
printf("%f %f %f",sum,x1,x2);
return 0;
}
但是sum
执行后的值竟然是-4。怎么了?
最佳答案
abs
在 <stdlib.h>
中声明.它需要一个 int
参数并返回 int
结果。
失踪的#include <stdlib.h>
也很可能会导致问题。您正在调用 abs
使用浮点参数;如果没有可见的声明,编译器可能会假设它需要一个 double
参数,导致代码不正确。 (这是根据 C90 规则;根据 C99 规则,该调用违反了约束,需要进行编译时诊断。)
你想要 fabs
<math.h>
中定义的函数.
关于c - split 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525379/