2012-07-24 244 views
6

當我這樣做: count = ++ count; 爲什麼我會收到警告 - 對變量計數的賦值沒有效果? 這意味着計數遞增,然後分配給自己或其他東西? 它只是++計數相同嗎? count = count ++中會發生什麼; ?爲什麼我沒有得到這個警告?賦值給變量沒有效果?

回答

13

count++++count都是count=count+1的簡稱。這個任務是內置的,所以沒有必要再分配它。 count++之間的差異(也知道作爲後綴)和++count(又稱前綴)是++count將行的其餘部分之前發生,而該行的其餘部分之後count++會發生。

如果你要拆開count=count++,你最終會得到這樣的:

count = count; 
    count = count+1; 

現在你可以看到爲什麼後綴不會給你一個警告:東西實際上是被在年底改變。

如果你拆開count=++count,你最終會得到這樣的:

count = count+1; 
    count = count; 

正如你所看到的,第二行代碼是沒用的,這就是爲什麼編譯器警告你。

+0

我說的簡短,不完全相同。 – LastStar007 2012-07-25 03:53:50

+1

正確 - 當我發表評論時(指表達式返回的值),您的回答更爲簡短。你在這裏得到了一個很好的解釋+1 – 2012-07-25 03:57:21

+0

爲什麼不通過count = count ++例子中第一行的警告?因爲那沒有做任何事情。 – Thomas 2017-07-26 03:58:56

3

打破了聲明你基本上寫:

++count; 
count = count; 

正如你可以看到數=計不做任何事情,因此警告。

3

++運算符是以下count = count + 1的快捷方式。如果我們打破你的線count = ++count它響應count = count+1 = count

3

要擴大一點,count ++是後綴。這需要其他操作後的地方,所以如果你不喜歡的東西

int a = 0, b = 0; 
a = b++; 

一個是0,B是1。然而,++計數,如果你沒有

int a = 0, b = 0; 
a = ++b; 

那麼a和b前綴都希望能1.如果你只是做

count++; 

++count; 

那麼它沒關係,但如果你把它與其他東西結合起來,它會