首页 > 解决方案 > 如何在 printf() 语句本身中使用 pow() 函数?

问题描述

我试图在我的代码中使用 pow() 函数来打印 3 的 2 次方。

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

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

输出:

0

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

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

输出:

9

我还尝试在 printf() 语句中直接使用返回整数的虚拟函数,并且效果也很好。

如果是这样,第一个陈述中的问题是什么?

标签: cpow

解决方案


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

鉴于现有架构的数量以及在大多数平台上“积分”和“浮点”之间的界限有多清晰,通常,您不能将函数返回的结果double视为int格式字符串并期望正确的输出.

当您将结果分配给powto时它起作用的原因c(我假设这是因为int它与%d是格式字符串。

解决方案:更改%dto%f或显式转换 to 的pow结果int


推荐阅读