1

だから私はこの質問を熟考しています(これは宿題/試験の復習の問題です):

a[j++] = ++i;前後のインクリメント演算子を使用しない場合の同等の式を書き留めます。そのような表現が提供できない場合は、その理由を説明してください。

私は次のことを思いつくことができました:

a[j] = i+=1;
j+=1;

a[] 内で j をポストインクリメントとしてインクリメントする方法は考えられません。後で使用する以外j+=1;に、そのような式を提供できないという答えにつながると思います (コードが 1 行ではなく 2 行であるため)。ポストインクリメント演算子なしではインクリメントをポストできないことを説明してください。

私は何かが欠けていますか、それとも正しいですか? 再確認したかっただけです。前もって感謝します。

編集: @James McNellis のおかげで、彼は使用する方法を提供しました a[(j+=1)-1] = (i+=1);

4

4 に答える 4

11

これは恐ろしく醜いですが、とにかくここにあります:

a[(j += 1) - 1] = (i += 1);
于 2011-02-23T03:52:22.713 に答える
2

ゼロにラップアラウンドしないことがわかっている場合i、頭に浮かぶ1つの解決策は次のとおりです。

(a[j] = i += 1) && (j += 1);
于 2011-02-23T04:00:22.277 に答える
0

コンマ演算子はカウントされますか?

a[j] = i + 1, j += 1, i += 1;

これは 3 つの別個のコード行のようなものですが、技術的には 1 つです。(2 番目の i += 1 が不要であることはわかっていますが、一貫性を保つために書きました。)

于 2011-02-23T04:23:29.167 に答える
0

+= さえ使用しない同等の式は、

(a[j] = i = i + 1, j = j + 1, a[j-1])

(i = i + 1, j = j + 1, a[j-1] = i)
于 2011-02-23T09:59:55.617 に答える