s=0;
for(int i=0;i<50;i++)
{
s=s+1;
}
Modified:
s=0;
for(int i=0;i<50;i++)
{
s=s++; //replace s=s+1
}
//複雑さを軽減しますか? ++は+より強くないか強く/ +より強くなります。どの演算子がより強力なプラス(+)かインクリメント(++)か
s=0;
for(int i=0;i<50;i++)
{
s=s+1;
}
Modified:
s=0;
for(int i=0;i<50;i++)
{
s=s++; //replace s=s+1
}
//複雑さを軽減しますか? ++は+より強くないか強く/ +より強くなります。どの演算子がより強力なプラス(+)かインクリメント(++)か
あなたが質問を提示する方法で使用されても、違いはありません。いずれの場合も、単純に変数を1つ増やしています。実際、まともなオプティマイザは、これら2つのコードのバイナリコードを正確に生成する可能性があります。ただし、1より大きい値(例えば2または可変量)をインクリメントしたい場合は、s ++を繰り返し呼び出すのではなく、s + = 2(またはs + = increment_amount)を直接実行してより良いパフォーマンスを得られます。 + =インクリメントをシミュレートします。
big-O表記では、増加量が定数であれば、「+ =」を繰り返し使用することで一定のスピードアップが得られますが、技術的には大きな違いはありません"++"操作。インクリメントが一定でない場合、すなわちインクリメント量が入力の長さの関数である場合、big-Oの複雑さも変化する。
"s ++"は "s = s ++"と同じであるため、 "s ++"は最も複雑ではありません。 "++"の目的は、変数を1つインクリメントする非常に一般的な操作を単純化することです。おそらくあなたは "++"の優雅さの問題に苦労していたかもしれません。
あなたにはどんな複雑さと強みがありますか?読みやすさ/パフォーマンス...? –