C++ std::p rintf( "%u" , 5) 在预期输出后添加一个数字

C++ std::printf("%u", 5) adds a number after the expected output

本文关键字:添加 输出 数字 一个 std rintf C++      更新时间:2023-10-16

下面代码的输出是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 longuint32_t,并且我已经将%u交换为%d%lu,但我总是得到相同的结果:在预期的printf输出之后出现一个奇怪的数字。将5交换为另一个数字会导致另一个意外的数字被添加到输出中。这是一个没有添加其他代码的新项目。我忽略了什么?

printf返回int类型。在您的情况下,它返回1,这是写入的字符数(5)。

coutprintf打印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::coutstd::printf

就一个,像这样:

std::cout << 5 << std::endl;

std::printf("%u", t);

你不应该把coutprintf混在一起…发生的事情是printf返回打印的字符数(在您的示例中是一个字符,即5)。因此,执行printf语句,打印5,但随后cout打印printf的返回值,并添加额外的1