当我开始学习没有 C 的 C++ 时,我从来没有费心去寻找 printf。现在我想在某些项目中使用格式化输出。所以我正在寻找一些可以解释使用 printf 和 IO 流之间的区别的引用资料。
我的一个疑问是:
float f = 1.5;
printf("%d", f);
为什么它打印出零? FWIK 它应该将 float 重新解释为 int 是真的吗?
最佳答案
它实际上调用了未定义行为 (UB)。如果格式说明符与传递给 printf
的参数的类型 不匹配,那么它就是 UB,这意味着任何事情都可能发生。它可以打印 0
或 9878978
或任何垃圾。任何完全不可预测的事情都可能发生。
如果参数的数据类型是float
,则使用%f
。
关于c++ - 使用 printf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783159/