为什么这样:
printf("%d\n", pow(1,0)); /* outputs 0 */
返回0
?我希望它返回1
。
答案 0 :(得分:10)
pow()
会返回double
类型。您需要使用%f
格式说明符来打印double
。
对提供的参数类型使用不合适的格式说明符会导致undefined behaviour。检查C标准N1570(C11
)的章节§7.21.6.1。 (是的,这对C89
,恕我直言)
答案 1 :(得分:1)
你需要输入把结果转换为int,因为pow()返回double。
printf("%d\n",(int) pow(1,0));
这会给你想要的输出1
注意:如果a和b都是pow(a,b)
,则integers
会给出正确的结果。但在处理add 0.5
时,您需要fractions
结果结果四舍五入到最接近的整数。
printf("%d\n",(int) (pow(2.1,0.9)))// will return 1.
printf("%d\n",(int) (pow(2.1,0.9)+0.5));//will return 2.
希望它对你有所帮助。