2014-01-12 68 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

明白了..謝謝:) –