字符串连接,为什么编译?

bry*_*mon 10 c++

我在我的代码中发现了这个,这是我的错字,但它仍然编译.谁知道为什么?我不知道.

#include <string>
#include <iostream>

int main()
{
  std::string x;
  std::string b = "Bryan";
  x += '|' + b, x;
  std::cout << x << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 21

x += '|' + b, x;
Run Code Online (Sandbox Code Playgroud)

这里,基本上是一个运算符,其左操作数首先被计算,然后是右操作数.就这么简单.

由于优先级+=+高于,运营商,它成为等价于:

(x += '|' + b) ,  x;
Run Code Online (Sandbox Code Playgroud)

这里:

left  operand => (x += '|' + b)
right operand =>  x
Run Code Online (Sandbox Code Playgroud)

试试另一个例子:

int f() { ... }
int g() { ... }

f(), g();
Run Code Online (Sandbox Code Playgroud)

这里f()将首先调用,然后调用g().

希望有所帮助.