2012-07-24 22 views
6

私がこれをするとき: count = ++ count; なぜ警告が表示されるのですか?変数countへの代入は無効ですか? これは、カウントがインクリメントされてから、それ自体に割り当てられることを意味しますか? ++ countと同じですか? count = count ++で何が起こるか。 ?なぜ私はこれについての警告を受けていないのですか?変数への代入は効果がありませんか?

答えて

13

count++および++countはともにcount=count+1である。割り当てが組み込まれているので、再度割り当てする必要はありません。 count++の違いは++countは、行の残りの部分の前に起こるのだろう、とcount++は、行の残りの後に起こるのだろうということである(また接頭辞として知られている)と++count(も接尾として知っています)。あなたは離れてcount=count++を取るとしたら

、あなたはこれで終わるだろう:Postfixはあなたに警告を与えることはありません、なぜ

count = count; 
    count = count+1; 

は今、あなたが見ることができる:何かが実際に最後に変更されています。

あなたは離れてcount=++countを取る場合、あなたはこれで終わるだろう:

count = count+1; 
    count = count; 

あなたが見ることができるように、コードの2行目は無用で、コンパイラは警告です理由です。

+0

私は短く、同じではないと言いました。 – LastStar007

+1

私はそのコメントを書いたときに答えがより簡単でした(式によって返された値を参照)。 + –

+0

なぜあなたはcount = count ++の例の最初の行について警告しませんか?それは何もしていないからです。 – Thomas

3

あなたは基本的に書いているアップ文を破る:あなたが数える見ることができるように

++count; 
count = count; 

=カウントが故に何も警告しません。

3

++演算子は、count = count + 1のショートカットです。あなたの電話を壊した場合count = ++countcount = count+1 = count

3

少し拡大すると、count ++は後置です。あなたは

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

のような何かをした場合は0になるので、bはしかし1、++あなたが

その後、
int a = 0, b = 0; 
a = ++b; 

aとbをした場合のカウントは接頭辞であるだろう他の操作後にそれを取りますあなただけ

count++; 

または

++count; 
を行う場合の両方が1になります

それは問題ではありませんが、他のものと組み合わせている場合は、

関連する問題