pow()函数无论输入什么始终返回0的问题求助
问题分析与解决
你的代码有两个关键问题导致结果异常:
- 调用pow的时机错误:你在定义变量
A和B后立刻调用pow(A,B)计算C,但此时A和B还没有通过scanf获取用户输入,属于未初始化的状态,内存里是随机垃圾值,这里碰巧结果为0,但本质是未定义行为,结果完全不可靠。 - 类型不匹配问题:
pow函数的返回值是double类型,直接赋值给int变量可能出现精度丢失(比如计算结果是9.999999999而非10时,转成int会变成9)。
修正后的代码
#include <stdio.h> #include <math.h> int main() { int A,B; printf("To find power please enter values of A and B \n"); printf( "Please enter value of A: \n"); scanf("%d",&A); printf("Please enter value of B: \n"); scanf("%d",&B); // 先获取输入再计算,同时处理类型转换 int C = (int)round(pow(A,B)); printf("The power of A and B is : %d",C); return 0; }
关键修正点
- 将
pow(A,B)的调用移到scanf获取A和B之后,确保计算时变量有合法值。 - 用
round()函数对pow的返回值取整后再转成int,避免精度丢失导致的错误(比如部分计算场景下pow的结果会接近整数但略有偏差)。
内容的提问来源于stack exchange,提问作者N-CODER
相关产品推荐
相关产品推荐

