繁体   English   中英

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

[英]what does + sign after variable mean?

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

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

我认为DrYap是对的。

x = + + a + + + a + + + 5; 

是相同的:

x = + (+ a) + (+ (+ a)) + (+ (+ 5));

这里的关键点是:

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

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

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

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

x = + + a + + + a + + + 5;

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

x = a + a + 5;

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

代码似乎相当于:

x= (+(+(a)))+ (+ (+(a)))+ (+(+(5)));

x = a + a + 5 哪个是11.你知道你可以在数字之前加上+或 - 符号,对吧? 现在那些+仅表示变量的符号。 由于符号为+ ,变量保持不变,即“+5”表示“5”,因此“+ a”表示“a”,“+ + a”表示“+(+ a)”表示“a”。 以同样的方式你可以写x = + + + 3 + + + + 3 + + + + 5 或者x = - + + - 3 + - + - 3 - - + 5;

由于+运算符从不是彼此相邻但是总是用空格分隔,因此语句x=+ +a+ + +a+ + +5; 实际上是读作

x=+ (nothing)+a+(nothing) +(nothing) +a+(nothing) +(nothing) +5;

所以基本上最后的等式变成了x=a+a+5; 结果。

x = + + a + + + + + + + +:这相当于

x = x = + + a + + + + + + + +或者我们可以把它写成x = +(+ a)+(+(+ a))+(+(+ 5))而且+只是表示最终将评估为x = a + a + 5的符号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM