[英]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.