パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Twitterで「三項演算子」がトレンド入り」記事へのコメント

  • 発端? (スコア:3, 参考になる)

    by Anonymous Coward

    きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな

    https://twitter.com/fnya/status/1192036095820615680 [twitter.com]

    • by Anonymous Coward

      return (条件)? true : false; なんて書くくらいなら return 条件; だよなあ
      そりゃレビューで落とすでしょ感

      • by Anonymous Coward

        return ok ? true : false;
        なら俺でも怒るが
        return b*b-4*a*c >= 0 ? true : false;
        なら怒らない

        • by Anonymous Coward

          動的型付けだったり、型推論したりの場合は
          return f(x);
          より
          return f(x) ? true : false;
          のことのほうがありがたい場合がある
          とくにf(x)を他人が定義していて、しかもtrueとfalse以外を帰す場合

          • by Anonymous Coward

            とくにf(x)を他人が定義していて、しかもtrueとfalse以外を帰す場合

            return (f(x)!=0);
            みたいに書けばいいと思う。

            • by Anonymous Coward

              Cだと関係演算子の結果はintの値なので、return する関数の型がboolだったりすると暗黙的な型変換が行われることになるので気持ちが悪い。条件演算子を使うかで true か false を返すようした方が良いと思う。

              • C99で導入されたbool(_Bool)では、false/trueはintなので、結局三項演算子を使ってtrue/falseにしても、_Boolへの暗黙の型変換は行われてしいますよ。
                一方、C++で導入されたboolの場合は、比較演算子はbool型を返すので、三項演算子を使わなくても暗黙の型変換は行われない
                結局、C99でもC++でも、「cond ? true : false」したからといって型の取り扱いは何も変わらない。

                それに、暗黙の型変換がいやだというなら、明示的に型キャストすればいいだけ。
                そこで三項演算子を使うのは「言語処理系が提供する型キャスト機能があるのに、同等のコードを手で書く」という車輪の再発明で、無駄にバグの元になりかねない。

              • by Anonymous Coward

                C99で導入されたbool(_Bool)では、false/trueはintなので、

                仕様としては stdbool.h に定義されてるのは論理型 bool と論理値 true と false だからそれを使うべきだよ。

              • C99では、
                _Bool型が新たに作られた。0と1しか値をとらない、intとは別の型
                stdbool.hで、bool は _Boolと定義されている。
                stdbool.hで、true/falseは、1/0と定義されている。int型の定数。

                なので、「bool a = true;」とかやっても、intから_Boolへの暗黙の型変換が行われる、という話ですよ。

              • by Anonymous Coward on 2019年11月09日 23時50分 (#3713748)

                あんたでもtrueとfalseのかわりに全部1と0で書いてあるコードや、変数名がぜんぶ連番のコードを読まされたら怒るだろ?
                プログラミング言語の意味論と、人間にどう見えるかは全然別の話だよ
                プログラミング脳になっちゃってるのか、頭が悪いやつはごっちゃにしてるけどな

                親コメント
              • by Anonymous Coward

                そうだよな。もともと人間にどう見えるかという話なのに、暗黙的な型変換は避けるべきとか、stdbool.hに定義されているtrueとfalseを使うべきとか言い始めるからおかしくなる。

ソースを見ろ -- ある4桁UID

処理中...