4

多くのプログラマーが式を括弧で囲んでいるのを目にします。例えば:

&(tab[i]) /* I use `&tab[i]`. */

[]オペレーターはオペレーターよりも優先順位が高いため、必要ないと思います&。では、なぜブラケットを使用するのでしょうか。

4

5 に答える 5

12

わかりやすくするために。誰もがすべての演算子の優先順位を記憶しているわけではありません。

于 2012-08-23T14:55:22.900 に答える
4

私は、基本的に2つの理由があると言います:

  • プログラマーは演算子の優先順位について確信が持てず、防御的にコーディングします
  • すべての読者 (優先順位を記憶していない可能性がある) に何が起こっているのかを完全に明確にするため
于 2012-08-23T14:56:51.070 に答える
2

最近の質問で、誰かが のようなコードを解読しなければなりませんでした--p---> x < 0。あなたのコードと同じように、そのコードは C++ の解析規則に従って明確です。

ただし、人間はこれらの複雑なルールをすべて覚えているとは限らないため、多くのプログラマーは、他の人 (または自分自身) には完全に明確に見えない状況で括弧を使用することを習慣にしています。コードの本当の意図を文書化しています。

これは良いことです™</p>

于 2012-08-23T14:57:46.427 に答える
2

後置演算子は常に単項演算子よりも優先順位が高いため、実際には必要ありません。

括弧を&(tab[i])使用する人は、式で使用するのと同じ理由でそれらを使用します(8 * 5) / 2

于 2012-08-23T14:56:30.840 に答える
1

彼らはそれがより明確だと思うからですか?特に次のような場合:

int *a[];

それは int の配列へのポインタですか、それとも int へのポインタの配列ですか?

于 2012-08-23T14:56:09.860 に答える