关于C++:”++”运算符的意义


Meaning of “+ +” operator (not ++)

本问题已经有最佳答案,请猛点这里访问。

为什么还要编译这段代码?"++"运算符的含义是什么?

1
2
3
4
5
6
7
8
9
10
11
#include <string>
int main()
{
  std::string c ="abc";
  c = c + +"d";
  c = c + + +"d";
  c = c + + + +"d";
  c = c + + + + +"d";
  printf("%s
"
, c.c_str());
}


没有+ +运算符。这里有一个+操作符(以一元和二元形式出现),还有一个++操作符,这里不使用。

每一个都是一个二元+运算符,后面跟着一个或多个一元+运算符。

这是:

1
c = c + +"d";

等于

1
c = c + (+"d");

这是:

1
c = c + + +"d";

相当于:

1
c = c + (+ +"d");

或:

1
c = c + (+ (+"d"));

诸如此类。


第一个+是一个二进制加法,用于计算c和第二个项的和。

其余的+是一元加运算符。在+"d"中,"d"const char[2]型,衰变为const char*型。然后将+应用于不起作用的指针,并返回相同的const char*

c + + +"d"相当于c + (+(+"d"))


这只是很多一元加号。