cout是否需要以分号结束?

phw*_*hwd 3 c++ cout comma-operator

我正在阅读Bjarne Stroustrup的编程:使用C++的原理和实践

在第2章的练习部分中,它讨论了在编译hello_world程序时查看输入错误的各种方法

#include "std_lib_facilities.h"

int main()  //C++ programs start by executing the function main
{
    cout << "Hello, World!\n",  // output "Hello, World!"
    keep_window_open();         // wait for a character to be entered
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

特别是本节要求:

想想你在程序中输入的错误至少还有五个(例如忘记 keep_window_open(),在键入单词时保持Caps Lock键,或者输入逗号而不是分号)并尝试每个错误,看看当你尝试时会发生什么编译并运行这些版本.

对于该cout行,您可以看到有一个逗号而不是分号.
这编译并运行(对我来说).是否做出了假设(如在javascript问题中:为什么使用分号?)语句已被终止?

因为当我尝试keep_terminal_open();编译时通知我分号排除.

tem*_*def 11

C++中的逗号运算符可以如下使用:

a, b;
Run Code Online (Sandbox Code Playgroud)

它意味着"做a,忽视结果,然后做b." 你可以像这样链接在一起:

a, b, c, (etc.), n;
Run Code Online (Sandbox Code Playgroud)

一般来说,这不是好的风格.逗号运算符很少在实践中使用,因为它令人困惑.有几次它合法有用通常会出现for循环:

for (int a = 0, b = 0; a < 100; a++, b++) {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

在这里,我们在for循环的最后部分使用逗号运算符来表示"增加a和" b.

要回答你的问题,是的,你之后应该有一个分号cout.使用逗号运算符在技术上也可以正常工作,但它不够优雅,可能会让人感到困惑.

  • @Chris Lutz-循环的第一部分是变量声明,但最后一部分(a ++,b ++)确实是逗号运算符的使用.你指出它后我才注意到这一点.:-) (3认同)