2014-01-12 65 views
0
main() 
{ 
int i=-1; 
+i; 
printf("%d %d",i,+i); 
} 

+的功能是什么?本书给出的输出是-1 -1。变量之前的加法运算符

+4

'+ i'正在使用一元加运算符,它不会进行加法运算。在标准化过程中,有一段时间,一元加运算符做了一些事情,但是到标准完成时,它的功能已被删除(但运营商本身仍然存在)。 –

+0

@JerryCoffin:一元加运算符有时候_does_做一些事情,如'char c; printf(“%d%d \ n”,sizeof c,sizeof + c);'(我相信你知道,当然这对于帮助初学者不合适)。 –

回答

0

+i评估为i-i将评估为i否定。无论如何,i的值保持不变;即在任务或比较之外,这是无效的。编译器应该给你一个警告。

+0

非常感谢:) –

+0

'返回值'?我认为一个更好的措辞是'评估'。 – ajay

+0

@ajay:如果'i'是'MyClass'类型而不是'int',我们会讨论'operator +()'的返回值......但是你当然是对的,“评估为”更多适合在这里。 – DevSolar

2

您可能会想到-i+i0-i0+i相同。如果i为负数,则-i为正数,而+i不会更改该值。

2

这是一个一元+。它本质上是一个没有操作。这本书是正确的。 (你为什么认为它不是?)

1

它本质上是书中的一个身份(这本书是正确的)。这个概念使代表某些复杂数字操作变得更容易。这也是为什么你可以有一个-0。也就是说,考虑以小增量从1-1接近0。

1

+ i和i的价值没有差别。 +我只是0 +我。 -i将值更改为-1 * i或0-i。

+0

所以如果-i被给予那里将不会有任何改变的权利? –

+1

@SayandeepMitra否,它给出的值是-1乘以该值。 – vinayawsm

+0

明白了..谢谢:) –