C++ C++;std::printf(“u”,5)在预期输出后添加一个数字
以下代码的输出为C++ C++;std::printf(“u”,5)在预期输出后添加一个数字,c++,xcode,printf,C++,Xcode,Printf,以下代码的输出为51,而不是预期的5。我在Mac OS Yosemite 10.10.4上使用Xcode 6.4和LLVM编译器 #包括 int main(int argc,const char*argv[]{ std::cout返回一个int。在您的示例中,它返回1,即写入的字符数(5) cout正在打印1,在printf之后打印5,因为您将它们链接在一起 要获得5,请说: std::printf("%u\n", 5) 返回打印字符数,因此printf本身打印“5”,然后使用std::cou
51
,而不是预期的5
。我在Mac OS Yosemite 10.10.4上使用Xcode 6.4和LLVM编译器
#包括
int main(int argc,const char*argv[]{
std::cout返回一个int。在您的示例中,它返回1
,即写入的字符数(5
)
cout
正在打印1
,在printf
之后打印5
,因为您将它们链接在一起
要获得5
,请说:
std::printf("%u\n", 5)
返回打印字符数,因此printf本身打印“5”,然后使用std::cout
和std::printf
打印“1”
只有一个,像这样:
std::cout << 5 << std::endl;
您不应该将cout
和printf
混合在一起…实际情况是printf
返回打印的字符数(在您的情况下是一个字符,即5
)。因此执行printf
语句,打印5
,但随后cout
打印printf
的返回值,添加一个额外的1
使用printf
或cout
,而不是两者都执行。感谢大家的快速回答,现在一切都很有意义了!感谢关于std::hex
和输出样式,在开始使用新语言时,这样的反馈总是受欢迎的。是的,但这是我的错误:D我以为我在printf中看到了“%x”:
std::printf("%u", t);