代码之家  ›  专栏  ›  技术社区  ›  van neilsen

如果在双引号后面传递逗号(,),则“cout”的行为是什么[[副本]

  •  0
  • van neilsen  · 技术社区  · 6 年前
    #include<iostream>
    using namespace std;
    
    class base
    {
    private:
        int id = 6;
    public:
        friend void display();
    };
    
    void display()
    {
        base b;
        cout<<"Display id" <<b.id<<endl;
        cout<<"Display id", b.id;
    }
    
    int main()
    {
        display();  
    }
    

    输出:

    Display id6
    Display id
    

    cout<<"Display id", b.id; 不是抛出错误吗?如果是逗号( )那么逗号后面写的变量的行为是什么呢(

    提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  3
  •   john    6 年前

    C++有逗号运算符, E1, E2 是一个完全合法的表达如果 E1 E2 也是表达式。它的优先级很低(低于 << )你的例子是这样的

    (cout<<"Display id"), b.id;
    

    逗号运算符的作用是先计算左侧的值,然后计算右侧的值。整个表达式返回的值是右侧的值。

    所以就你的例子来说

    cout<<"Display id", b.id;
    

    与…完全相同

    cout<<"Display id";
    

    int ch;
    if (ch = in.get(), ch != '\n')
    

    把一个字符读入 ch