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

How to use pow() function in the printf() statement itself?

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

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

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

输出:

0

然而,当我尝试先将它分配给一个变量然后打印它时,它运行完美。

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

输出:

9

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

如果是,第一个语句的问题是什么?

问题出在格式说明符上。 pow returns 一个 double,而 %d 指定一个 int

考虑到架构的数量以及在大多数平台上 'integral' 和 'floating point' 之间的界限非常清晰,一般来说,您无法处理返回 [=11 的函数的结果=] 作为格式字符串中的 int 并期望正确的输出。

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

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