我想1 2 4 8 16 32 64 128 256
在屏幕上打印出来.但我得到的只是0 0 0 0 0 0 0 0 0
.这是我的代码:
#include#include void print(int n) { if(n<=8) { printf(" %d ",pow(2,n)); return print(n+1); } } int main() { print(0); return 0; }
Some program.. 8
pow
是一个浮点函数.它返回一个double
.您无法打印"%d"
(使用不匹配的格式和参数是未定义的行为).
使用正确的格式(例如"%f"
)或将结果转换为int
.或者为什么不简单地使用二进制算法将值移位1
正确的位数.
pow
是一个浮点函数.它返回一个double
.您无法打印"%d"
(使用不匹配的格式和参数是未定义的行为).
使用正确的格式(例如"%f"
)或将结果转换为int
.或者为什么不简单地使用二进制算法将值移位1
正确的位数.
pow
返回一个double
,%d
格式说明符期望一个int
.
尝试更新您的printf
使用呼叫%.0f
,或者将结果pow
转换为int
:
选项1:
#include#include void print(int n) { if(n<=8) { printf("%.0f\n", pow(2, n)); return print(n+1); } } int main() { print(0); return 0; }
选项2:
#include#include void print(int n) { if(n<=8) { printf("%d\n", (int) pow(2, n)); return print(n+1); } } int main() { print(0); return 0; }
此外,您不应该使用return print(n+1)
给定的返回类型print
是void
.你可以重写print
为一个返回2的幂的函数,n
然后从中访问返回值main
:
#include#include 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; }