82

ANSI C コードでは、単一の戻り値が括弧で囲まれていることがよくあります。

このような:-

int foo(int x) {
  if (x)
    return (-1);
  else
    return (0);
}

これらの場合、戻り値の周りに () を使用するのはなぜですか? 何か案は?その理由はわかりません。

4

11 に答える 11

60

本当に理由はありません...それは古い慣習です。

スペースを節約するために、プログラマーは最終的な計算を独自の行ではなく戻り行で行うことがよくあります。括弧は、次のように、返される単一のステートメントであることを簡単に確認できるようにするためにほとんどそこにあります。

return (x+i*2);

それ以外の

int y = x+i*2;
return y;

カッコがクセになってくっつきました。

于 2008-10-02T11:56:37.710 に答える
55

実用的ではあるがありそうもない動機は、値を括弧で囲み、戻り値をマクロとして定義し、ログ コードを挿入してすべての戻り値を監視することです。

于 2008-10-02T19:26:01.797 に答える
23

私の個人的なスタイルは、複雑な式がある場合は括弧を使用することです。例えば、

return (a + b);

ただし、式が単純な用語である場合は使用しないでください

return a;

なぜそのようにするのかはわかりません。ずっと前に拾ったもの。

ちなみに、関数呼び出しに見えるようにするには、次のようにすると思います。

return(a);  // ugh

信じられないほど醜く、間違っています。

于 2008-10-02T12:24:06.427 に答える
13

There are a few reasons:

  1. if/while/for/etc. are all control keywords which must have parens. So it often seems natural to always put them on return too.

  2. sizeof is the only other keyword that can either have them or not, except that in some cases you must use parens. So it's easier to get into the habit of always using parens. for sizeof, which implies a logic of: if you can, always do.

  3. case/goto are the only keywords where you never use parens. ... and people tend to think of those as special cases (and like them both to stand out from other control keywords, esp. goto).

于 2008-10-02T14:35:21.107 に答える
8

例のように-1を返す場合、マイナスがより目立つため、括弧を使用すると読みやすくなると思います。

return 1

また

return -1

また

return (-1)
于 2008-10-08T13:31:22.103 に答える
4

おそらくそれは習慣です.UnixとCを私たちにもたらした人々は、Multicsプロジェクトから来ました. Multics は PL/I で作成され、PL/I では括弧は必須です。

于 2014-04-25T16:29:01.023 に答える
2

括弧を使用する場合によくあることですが、それは単に読みやすさのためだと思います (たとえば、Ruby は引数を囲む括弧なしのメソッド呼び出しをサポートしていますが、最近の本や記事ではそうではないとアドバイスしています)。

于 2008-10-02T11:55:46.073 に答える
2

私は少なくとも 1 人のプログラマーと仕事をしたことがありますが、そのプログラマーは return特別な種類の関数呼び出しだと考えていましたが、私のコードが括弧なしで準拠しているのを見て驚きました。

于 2008-10-02T20:26:53.710 に答える
-5

return ステートメントで括弧を使用することは、C/C++構文の理解が不十分であることを示しています。それはそれと同じくらい簡単です。しかし、すべてを中かっこで囲むほど悪くはありません。

int foo(int x) {
  if (x) {
    return (-1);
  }
  else {
    return (0);
  }
}

非常に多くのプログラマーがこれを行っています。あなたの誰かがこれを読んだら、おそらく説明したいと思うかもしれません.

于 2011-01-21T19:09:49.367 に答える