パスワードを忘れた? アカウント作成

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

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

    by Anonymous Coward

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

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

    • by Anonymous Coward

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

      • by Anonymous Coward

        それを可読性が落ちると言ってつっぱねたというのがすごい。
        ? true : false
        がついている方が読みにくいと超個人的には思うけどね。

        • by Anonymous Coward

          俺も、ゴミつけたら読み難いとしか思えないが、読み易い読み難いってのは個人の感性というか感想だから仕方ないのだろう。
          とはいえ自分に都合がよいからといって、一般的でないことやって読み難いから止めろと言われても、つっぱねるってのは、エンジニアを仕事にするの向いてないというか、チームに存在するだけで迷惑な奴ってことだから仕事変えて趣味だけに留めるべきだろうな。

          https://twitter.com/fnya/status/1192039284821250048 [twitter.com]
          別ツイートで、こんなことも言ってるから、つまみぐい的にプログラム書いてきて、そもそものプログラムへの理解が乏しいようだから、自分の能力不足を改善せずに目先の問題回避してきた結果、そうしないと困ってるのかもね。
          そのあたりも思考方向がエンジニア向きじゃなさそう。

          • Re: (スコア:2, 参考になる)

            by Anonymous Coward

            TokusiN @toku51n 11月6日
            返信先: @fnyaさん

            trueとの比較は危険なのでやってはいけない。もしどうしてもbool型との比較が必要なのであれば!=falseにしなければいけない。
            1件の返信 2件のリツイート 10 いいね

            fnya@Web/Mobileアプリ構築中 @fnya 11月6日

            危険というのは、PHPやJavaScriptでオブジェクトがtrue判定されることですか?
            1件の返信 0件のリツイート 0 いいね

            TokusiN @toku51n 11月6日

            いえ、trueと評価されるべきものがfalse判定されることがあります。
            1件の返信 0件のリツ

            • by Anonymous Coward

              みんな分かってると思うけど補足。

              != false と書くべきって理由は、false 、true は値としては 0 、1 になるってところ。
              そこに 2 とか 3 とかの値が来たときにどう動くのか、それを考えろってこと。

              0 、1 以外は想定外? それならそれを保証しろ、と。ドキュメントとか assert() とかでも良いけど、実環境の実行時には無力。

              あと、ツイートの「条件式だけで動作する」ってやつは「式の値」だと思うけど、C 特有で分かりにくいとは思う。「副作用」もあるだろうし。

              • by Anonymous Coward

                != false と書くべきって理由は、false 、true は値としては 0 、1 になるってところ。
                そこに 2 とか 3 とかの値が来たときにどう動くのか、それを考えろってこと。

                0 、1 以外は想定外? それならそれを保証しろ、と。ドキュメントとか assert() とかでも良いけど、実環境の実行時には無力。

                _Bool は 0 か 1 以外の値取り様ないだろアホか

              • by Anonymous Coward

                少なくとも C の仕様だと _Bool が 0と1が保持できることは保証してるけど、 0 と 1しか値ととらないことは保証してないよ。

              • by Anonymous Coward

                https://kikakurui.com/x3/X3010-2003-01.html [kikakurui.com]
                > 6.3.1.2論理型 任意のスカラ値を_Bool 型に変換する場合,その値が 0 に等しい場合は結果は 0 とし,それ以外の場合は 1 とする。

                とあるけども、0 と 1 以外の値を取らせる方法教えてPLZ

              • by Anonymous Coward
                未初期化の_Boolは0でも1でもない値(例えば鼻から出る悪魔とか)を取ることがある
              • by Anonymous Coward

                「0 と 1 以外の値を取らせる方法」の意味が理解できない池沼は無理しなくて良いよw

              • by Anonymous Coward

                Cなんだから、アドレスとってメモリ書き換えればいくらでも書き換えられるよ?

              • by Anonymous Coward on 2019年11月11日 10時13分 (#3714137)

                未定義動作挙げる意図が分からん

              • by nekopon (1483) on 2019年11月11日 10時33分 (#3714152) 日記
                #3713087

                頭が正常系でできてんのか?

                これ重要な指摘かと。
                プログラマたるもの鼻から悪魔を出させるようなことはしたくないにちがいないのですが、だいたいの処理系の鼻には悪魔がたくさん住み着いているので。

              • by Anonymous Coward

                どこに未定義動作が?
                bool型変数のアドレスを取ること?
                アドレスをchar*型にキャストすること?
                char*型変数で受けること?
                アドレスのメモリに任意の値を放り込むこと?

              • by Anonymous Coward
                gccがおかしいだけなような気がする https://godbolt.org/z/ZyKjvX [godbolt.org]
              • by Anonymous Coward

                どんなバイナリ吐いてるんだろう...

              • by Anonymous Coward

                gccがおかしいだけなような気がする
                https://godbolt.org/z/ZyKjvX [godbolt.org]

                「型_Bool として宣言されたオブジェクトは,値 0 及び 1 を格納するのに十分な大きさをもつ」領域であり、そこをchar*でキャストして書き込んでるんだから未定義動作だしょ。

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

処理中...