C++ std::p rintf( "%u" , 5) 在预期输出后添加一个数字
C++ std::printf("%u", 5) adds a number after the expected output
下面代码的输出是51
,而不是预期的5
。我在Mac OS Yosemite 10.10.4上使用Xcode 6.4和LLVM编译器。
#include <iostream>
int main(int argc, const char * argv[]) {
std::cout << std::printf("%u", 5) << std::endl;
return 0;
}
如果试图提供int
, unsigned long
和uint32_t
,并且我已经将%u
交换为%d
和%lu
,但我总是得到相同的结果:在预期的printf
输出之后出现一个奇怪的数字。将5
交换为另一个数字会导致另一个意外的数字被添加到输出中。这是一个没有添加其他代码的新项目。我忽略了什么?
printf返回int类型。在您的情况下,它返回1
,这是写入的字符数(5
)。
cout
在printf
打印5
之后打印1
,因为你将它们链接在一起。
获取5
,输入:
std::printf("%un", 5)
printf返回打印的字符数,因此printf本身打印'5',然后'1'作为cout << result_of_print
的结果打印出来
你可能想要的是
std::cout << 5u << std::endl;
还有:避免C风格输出(printf)和c++风格输出(std::cout)
您同时使用std::cout
和std::printf
。
就一个,像这样:
std::cout << 5 << std::endl;
或
std::printf("%u", t);
你不应该把cout
和printf
混在一起…发生的事情是printf
返回打印的字符数(在您的示例中是一个字符,即5
)。因此,执行printf
语句,打印5
,但随后cout
打印printf
的返回值,并添加额外的1
。
相关文章:
- 如何调用继承的重载运算符<<并在派生类的输出中添加更多文本?
- C++添加到字符串(输出)
- C++:添加到输出中的不需要的数字
- 输出操纵器 std::ends 是否向输出缓冲区添加空字符?
- 为什么我添加一个"&",它输出不同?
- boost::log 输出到 Visual Studio 输出控制台 - 为格式添加额外的 LF/CR
- 在我的桌子上仍将其添加到我的桌子的同时,我如何为我的输出添加一个额外的零
- 在我的输出之前,我该如何添加数字
- 使用C 将JPG文件添加到输出的HTML文件中
- 为什么 std::cout 在我的输出中添加返回或换行符
- 如何将项目添加到输出文件中
- 如何使用Coin3d / OpenInventor添加任意数量的引擎输出
- Windows Batch - 如何在将标准输出重定向到文件时添加时间戳
- 添加 cout 语句会更正输出
- 添加尾随空格和使用 eof 时的额外输出
- C++输出错误(添加了新问题)
- 如何在不破坏现有代码的情况下将输出参数添加到功能
- 对于MySQLDump,添加一个注释,输出每个表转储的行数
- 在基于继承的系统中添加过滤输出的机制
- 添加输出文件后C++代码无法正确编译