#include <stdio.h>
int power (int m, int n);
int main()
{
int i;
for (i = 0; i < 10; ++i)
printf ("%d %d %d\n", k , power(2,i), power(-3,i));
return 0;
}
int power (int base, int n)
{
int p;
for (p = 1; n > 0; --n)
p = p * base;
return p;
}
#include <stdio.h>
int power (int m, int n);
int main()
{
int i;
for (i = 0; i < 10; ++i)
printf ("%d %d %d\n", k , power(2,i), power(-3,i));
return 0;
}
int power (int base, int n)
{
int p;
for (p = 1; n > 0; ++n)
p = p * base;
return p;
}
第一个代码是K&R书的第1.8章参数 - 按值调用的完整示例。第二个代码中的唯一区别是第二个 for 循环中的 ++n。为什么第一个在终端中显示正确的结果而第二个显示错误的结果?
我希望这两个代码的工作原理相同......
这段代码有几个问题:
gcc power.c;
power.c: In function ‘main’:
power.c:8:30: error: ‘k’ undeclared (first use in this function)
8 | printf("%d %d %d\n", k, power(2, i), power(-3, i));
| ^
power.c:8:30: note: each undeclared identifier is reported only once for each function it appears in
问题在于 k 未定义。 您的意思可能是
i
而不是 k
for (p = 1; n > 0; n++)
由于循环只会停止,如果 n <= 0
(如果 n 增加就不会发生),则会导致无限循环。
您必须使用 n++
而不是
n--
孔代号:
#include <stdio.h>
int power(int m, int n);
int main() {
int i;
for (i = 0; i < 10; ++i)
printf("%d %d %d\n", i, power(2, i), power(-3, i));
return 0;
}
int power(int base, int n) {
int p;
for (p = 1; n > 0; n--)
p = p * base;
return p;
}