变量后面的+符号是什么意思?

use*_*089 5 c c++

以下代码的输出是什么
int x,a=3;
x=+ +a+ + +a+ + +5;
printf("%d %d",x,a);

输出是:11 3.我想知道怎么样?一个手段后+符号是什么?

Jul*_*ian 18

我认为DrYap是对的.

x = + + a + + + a + + + 5; 
Run Code Online (Sandbox Code Playgroud)

是相同的:

x = + (+ a) + (+ (+ a)) + (+ (+ 5));
Run Code Online (Sandbox Code Playgroud)

这里的关键点是:

1)c,c ++没有+作为后缀运算符,所以我们知道我们必须把它解释为前缀

2)monadic +比dyadic +更紧密地绑定(优先级更高)

好笑不是吗?如果这些 - 迹象,它看起来不会那么奇怪.Monadic +/-只是一个主要标志,换句话说,"+ x"与"0 + x"相同.

  • 是的,因为如果你删除`+ +`之间的空格,你得到一个`++`(增量运算符)而不是两个加号. (3认同)

DrY*_*Yap 13

刚刚在下一个值之前看到+之后的+.如果使用一致的间距,则与以下内容相同:

x = + + a + + + a + + + 5;
Run Code Online (Sandbox Code Playgroud)

但并非所有+ s都是必需的,因此它的行为与执行相同:

x = a + a + 5;
Run Code Online (Sandbox Code Playgroud)

a的值没有改变,因为你从未使用过增量运算符,即++,两个+符号之间没有空格.+和++是两个独立的运算符.

  • 我想补充说C有一个一元的`+`,对于一元减去`-`的对称性,这就是这里使用的.除了令人困惑的程序员之外,没有人知道一元加上是什么.http://msdn.microsoft.com/en-us/library/s50et82s(v=vs.71).aspx (4认同)