c - 如何在 printf() 语句本身中使用 pow() 函数?
问题描述
我试图在我的代码中使用 pow() 函数来打印 3 的 2 次方。
我像这样在 printf() 语句本身中使用了 pow 函数。
printf("%d",pow(3,2));
输出:
0
但是,当我尝试首先将它分配给一个变量然后打印它时,它运行得很好。
int c;
c=pow(3,2);
printf("%d",c);
输出:
9
我还尝试在 printf() 语句中直接使用返回整数的虚拟函数,并且效果也很好。
如果是这样,第一个陈述中的问题是什么?
解决方案
问题是格式说明符。 pow
返回一个double
,而%d
指定一个int
。
鉴于现有架构的数量以及在大多数平台上“积分”和“浮点”之间的界限有多清晰,通常,您不能将函数返回的结果double
视为int
格式字符串并期望正确的输出.
当您将结果分配给pow
to时它起作用的原因c
(我假设这是因为int
它与%d
是格式字符串。
解决方案:更改%d
to%f
或显式转换 to 的pow
结果int
。
推荐阅读
- firebase - Ionic 4 PWA - 无需部署即可更新应用程序
- typescript - Typescript 用户定义的类型保护检查对象具有数组中的所有属性
- react-native - 如何通过 React-Native 中的 fetch() 从函数返回数据
- bash - 如何扫描日志文件以查找 bash 中的错误
- mongodb - Mongodb计数集合中的字段总和有条件
- python - 如何使用 skimage 添加噪声
- wso2is - WSO2 IS 5.9 的自定义用户存储
- apache-kafka - 偶数个Kafka broker会影响ensemble操作和leader选举吗
- python - AttributeError:“StringIndexer”对象没有属性
- python-3.x - 如何编写循环使 cipherkey 可以大于 26?