2016-11-04 12 views
-6

私は、コード1がASCII値0、NUL charなどに割り当てられているASCII文字にコードを割り当てていると言います。++私はi ++ +1と同じ仕事をしていますか?

for (int i = 0; i < 256; i++) { 
    // assign code i++ +1 
    arr[i].code = i++ +1; 
} 

私が代わりに私++を使用した場合、それは十分であろう:私は私が1を+++で、現在、つまり、反復的にこれをやっていますか?

+0

「i +++ 1」とは何ですか? –

+4

実際のコードを表示してください。そうでなければ空のループではあいまいなコメントではありません。 – Evert

+0

@ダン確かにそうではありません。ボーナスポイントの場合は、プリインクリメント( '++ i + 1')と比較して対比できます。 –

答えて

2

これは役立つかもしれない

Y = I +++のx - >私の現在の値に追加xとyに結果を代入し、私

yの値をインクリメント= ++ 1 - >私は1ずつ増加とy

0

に結果を割り当てるはい、私は両方のIプラス1の値に評価され、両方がそれだ私は1

によって増分残す++ 1を+++とそれを行う奇妙な方法は、ちょうどやっていることで間違っています:

for (int i = 1; i < 256; i += 2) 

後であなたのコードを読んでいる人は後者が好きです。

1

これは、i++ + 1と書いておきます。しかし、はい、++iの効果と値はi+++1と同じです。

後者は論理的に結果に到達するまでに時間がかかりますが、古い値がiで、増分がiになり、古い値に1が加算され、結果として合計が得られます。プリインクリメント演算子は、iをインクリメントし、その新しい値を結果として使用します。

技術的にはどちらも基本的に最適化コンパイラが与えられた同じコードにコンパイルする必要があります。

1

はい。彼らは同じです。 +より緊密

++境界がそれほど発現がさらに一方

s = i + 1 
i = i + 1 

ように拡張することができる

s = (i++) + 1 

ように左から右に評価され、s = ++iは、同じタスクを行います。これは、次のように展開することができます。

2番目のバージョンは、読みやすく拡張性が高いため、使用することをお勧めします。しかし、私はスピードの違いがあるとは思わない。

関連する問題