如何在printf()语句本身中使用pow()函数?

时间:2019-06-07 14:05:35

标签: c pow

我正在尝试在代码中使用pow()函数来打印3升至2的幂。

我像这样在printf()语句中使用了pow函数。

printf("%d",pow(3,2));

输出:

0

但是,当我尝试先将其分配给变量然后打印时,它运行得很好。

int c;
c=pow(3,2);
printf("%d",c);

输出:

9

我也尝试过使用一个伪函数直接在printf()语句中返回整数,而且效果也很好。

如果是,那么第一句话出了什么问题?

1 个答案:

答案 0 :(得分:3)

问题是格式说明符。 pow返回一个double,而%d指定一个int

鉴于现有的体系结构数量以及大多数平台上'integral'和'floating point'的划分非常清楚,通常,您不能将函数返回double的结果视为{ {1}}(格式字符串),并期望正确的输出。

int的结果分配给pow(我认为是c的结果,因为它与int一起使用时,它起作用的原因是在那种情况下)您的编译器知道隐式转换结果,但是当变量类型的唯一指示是格式字符串时,编译器不知道。

解决方案:将%d更改为%d,或将%f的结果显式转换为pow