我想1 2 4 8 16 32 64 128 256在屏幕上打印出来.但我得到的只是0 0 0 0 0 0 0 0 0.这是我的代码:
#include<stdio.h>
#include<math.h>
void print(int n) {
if(n<=8) {
printf(" %d ",pow(2,n));
return print(n+1);
}
}
int main() {
print(0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
pow返回一个double,%d格式说明符期望一个int.
尝试更新您的printf使用呼叫%.0f,或者将结果pow转换为int:
选项1:
#include <stdio.h>
#include <math.h>
void print(int n)
{
if(n<=8)
{
printf("%.0f\n", pow(2, n));
return print(n+1);
}
}
int main()
{
print(0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
选项2:
#include <stdio.h>
#include <math.h>
void print(int n)
{
if(n<=8)
{
printf("%d\n", (int) pow(2, n));
return print(n+1);
}
}
int main()
{
print(0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此外,您不应该使用return print(n+1)给定的返回类型print是void.你可以重写print为一个返回2的幂的函数,n然后从中访问返回值main:
#include <stdio.h>
#include <math.h>
int print(int n)
{
return (int) pow(2, n);
}
int main()
{
int i;
for(i = 0; i <= 8; i++)
printf("%d\n", print(i));
return 0;
}
Run Code Online (Sandbox Code Playgroud)