c - 使用 while 循环而不是 pow:这个错误是什么意思?
问题描述
我正在尝试使用 C 编程创建一些代码,这些代码可以使用用户指定的两个值来显示一定幂的数字。我想在第一部分使用 pow,在第二部分使用 while 循环。但是,我遇到了一个我似乎无法摆脱的当前代码错误。
这是我不熟悉的错误:
error: invalid operands to binary * (have ‘int (*)(int, int)’ and ‘int’)
result2 = result2 * base;
我试过用同样的错误调查其他问题,但它们差异很大,我无法理解。
我已经尝试过研究“long”,但我还没有通过我的 C 教科书体验过它,所以如果可能的话,我想避免使用它。
#include <stdio.h>
#include <math.h>
int result2(int base, int exponent);
int main(void)
{
double base;
double exponent;
double result1;
puts("Please enter a value as the base and another as the exponent.");
scanf("%lf%lf", &base, &exponent);
result1 = pow(base, exponent);
printf("Library solution: %lf\n", result1);
printf("My solution: %d\n", result2(base, exponent));
}
int result2(int base, int exponent)
{
int i;
for(i=1; i<=exponent; i++)
{
result2 = result2 * base;
}
return;
}
我希望能够使用这两种方法和用户的值正确计算方程。但是,有了这个错误,我似乎无法超越并实现这一目标。谢谢你。
解决方案
int result2(int base, int exponent)
{
int i;
for(i=1; i<=exponent; i++)
{
result2 = result2 * base;
}
return;
}
result2
是您的函数的名称。与其像使用可以累积循环结果的变量一样使用它,不如创建一个变量来完成这项工作。然后在最后返回变量的值。
int result2(int base, int exponent)
{
int i;
int result = 1;
for(i=1; i<=exponent; i++)
{
result = result * base;
}
return result;
}
更好的是,给函数起一个不同的名字。result2
听起来像一个变量的名称。该函数应该被命名为表明它做什么的东西。既然pow
被拍了,怎么power
办?
int power(int base, int exponent)
{
int result = 1;
for (int i=1; i<=exponent; i++)
{
result *= base;
}
return result;
}
其他一些小的改进是int i
在for
循环内声明,并result *= base
用作result = result * base
.
推荐阅读
- javascript - 播放器图标在视频缩略图加载到视频播放器之前显示
- php - 使用 PHP 在下拉列表中动态添加项目
- javascript - 如何遍历 json_encode 数组?
- javascript - 当另一行的折叠状态发生变化时,表格行布局会发生变化
- fonts - 渲染网页时通过字体加载自定义字体它首先加载其他字体并在瞬间替换
- r - 可访问性模块 highcharter 不工作
- ios - 如何在 App Store Connect 中撤销 iOS 应用程序的 Apple Silicon Compatibility 验证状态?
- python - 使用 subprocess 模块打开可执行文件,并向其发送数据
- c - 为什么没有对中间元素进行排序?
- ffmpeg - 使用 ffmpeg 或 gstreamer 将实时 mjpeg 流转码为 hls 流