最近知った、前置きインクリメントと後置きインクリメントの話です(ォィ)
++i と i++ は、どうやら挙動が違うらしいです。
僕はずっと、i++ しか使ったことがありませんし、本を読んで勉強する人では無いので(知識のシャストインタイム派とでも呼んでください)、こういう基本的な知識が抜け落ちていることは珍しくありません。
で、どうこういうより、かるあさんに教えていただいた、挙動が変わるサンプルで実行してみました(一部いじってます)
static void Main() {
int i = 0; PrintBack(++i);
int j = 0; PrintBack(j++);
}
static void PrintBack(int v) {
System.Diagnostics.Debug.WriteLine(v.ToString());
}
結果は以下の通りでした。
1
0
つまり、++ を前に置くと先に 1 を加算し、++ を後ろに置くと後から 1 を加算していることがわかります。
で、これを踏まえて、0 ~ 9 までループを回して、画面に値を表示させて見ます。
static void Main() {
int i = 0;
while (i < 10) {
PrintBack(++i);
}
System.Diagnostics.Debug.WriteLine("-------------------");
int j = 0;
while (j < 10) {
PrintBack(j++);
}
}
static void PrintBack(int i) {
System.Diagnostics.Debug.WriteLine(i.ToString());
}
これは、前回の内容を単にループさせているだけなので、当然、次の結果になります。
1
2
3
4
5
6
7
8
9
10
-------------------
0
1
2
3
4
5
6
7
8
9
でも、
普通こんなことしませんよね?
こんな感じで書くことが多いんじゃないでしょうか?
(「for 使うぜ」、というツッコミは認めませんw)
int i = 0;
while (i < 10) {
PrintBack(i);
++i;
}
そして、この様に書いた場合は、当然、i++ と記述しても同じ結果になります。
そんな訳で、皆さんは、どちらを使用していますか?
そして、どのように使い分けていますか?
#単に、これが聞きたかっただけだったりする。