pow(1,0)返回0?

时间:2015-06-05 14:55:39

标签: c printf pow ansi-c

为什么这样:

printf("%d\n", pow(1,0)); /* outputs 0 */

返回0?我希望它返回1

2 个答案:

答案 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.

希望它对你有所帮助。