gpt4 book ai didi

c++ - 混合 std::cout 的奇怪输出

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:52 26 4
gpt4 key购买 nike

C++的std::cout好像是个有趣的东西。我今天在我的 C++ 编译器上尝试了以下程序:

cout<<"!"<<"@"<<endl;
cout<<"!"<<cout<<"@"<<endl;
cout<<"!"<<(cout<<"@")<<endl;

输出结果很奇怪:

!@
!0x601068@
@!0x601068

第一行是行人;第二个是可以理解的;但是,第三行超出了我的知识范围。有人可以解释输出吗?提前谢谢大家!

魏紫瑶

最佳答案

这一行:

cout<<"!"<<(cout<<"@")<<endl;

首先执行:

(cout << "@")

注意:它本可以先执行其他事情,但编译器优化了这个子表达式并发现它可以将它移动到语句的开头而不破坏任何约束。

这个表达式的结果是一个流(cout)。所以结果表达式是:

cout<<"!"<< cout <<endl;

这导致:

@!<pointer>

关于c++ - 混合 std::cout 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com