我学习了C#,但我想学习C,然后学习C ++ for OOP。现在我正在使用库math.h和函数pow(x,y)在C.
我正在用这段代码编写一个程序:
enter image description here
我觉得很奇怪。结果如下:
enter image description here
我的问题是关于战俘。它做了什么?
是否有可能向我解释为什么这些事情表明了?我无法理解。
谢谢你的帮助,我也很抱歉我的英语。
答案 0 :(得分:1)
您的代码的主要问题是您必须了解如何处理C可以处理的几种本机类型的操作。
如果两个运算符都是整数,除法运算(/)将返回一个整数。
那是:
1 / 4 == 0
而不是 0.25 ,因为它似乎是您所期待的。
因此,在行:
number = pow(160000, 1 / 4);
您实际执行的是:
number = pow(160000, 0);
我们知道任何提升到 0 能力的基数等于 1
答案 1 :(得分:1)
编译器将'1/4'视为整数除法。
这意味着它首先进行计算为0.25的除法然后将其转换为整数(丢弃小数),然后将其保留为0.并且任何以0为幂的数字都为1.
在1和4之后添加小数点可让编译器知道您希望除法的结果为double,因此它将结果保持为0.25。
以下是一些示例代码:
#include <stdio.h>
#include <math.h>
int main()
{
double number = 1/4;
printf("Integer Division: %f\n", number); //prints 0
number = 1.0/4.0;
printf("Double Division: %f\n", number); //prints 0.25
return 0;
}