xzx++ 2024-12-25 15:28 采纳率: 33.3%
浏览 121

<< 和 = 的优先级问题

大家好,想问个问题
int a=10;
cout << a = 5 << endl;
第二句是不合法的,但是原因是第二句等效于
(cout << a) = (5 << endl) 吗?还是别的什么

  • 写回答

1条回答 默认 最新

  • 牛哞哞杂记 2025-01-14 14:57
    关注

    第二句不合法的原因是因为 cout << a = 5 << endl 中的 a = 5 是一个赋值表达式,它的结果是 5,而 endl 是一个操纵符。正确的解释是 cout << (a = 5) << endl,这会将 a 赋值为 5,然后将 5 输出到 cout,最后输出 endl。 但是,cout << a = 5 << endl 这种写法是不合法的,因为 endl 不能与 5 进行赋值操作。正确的写法应该是:
    int a = 10;
    cout << (a = 5) << endl;
    这会输出 5 并将 a 的值更新为 5。

    评论

报告相同问题?

问题事件

  • 已采纳回答 12月25日
  • 创建了问题 12月25日