タグ

演算子とプログラミングに関するmohnoのブックマーク (4)

  • 1行で発狂するコード - Qiita

    人は1行の記述で死ぬこともある 公開からコンスタントに閲覧をいただいている以下の記事。需要がありそうなので、もう1つ記事を書いてみようと思う。 題材は前回同様のJavaScriptのクソコードではあるが、前回は冗長を極めたクソコードであるのに対し、今回はたった1行である。 1行なのに、なんと示唆深いに富む(決してほめていない)コードだろうか。 不可思議なコード では、実際に見てみよう。 return a = a >= 10 ? 10 : a >= 5 ? 5 : a >= 3 ? 3 : a >= 2 ? 2 : 1, z * a; これを見て、何が return で返されるかわかります? 代入演算子 最初見たとき、代入文 a = ××× の評価値って何になるのかな? a が return されるのかなと思いました。 割り当て操作は、割り当てられた値として評価されます。 JavaScrip

    1行で発狂するコード - Qiita
    mohno
    mohno 2024/03/08
    「rm -rf /」じゃなかった。/「何が return で返されるかわかります?」←C言語だったら分かるし、JavaScriptも同じみたいだね。/オススメはされないだろうけど、カッコなしで済むような優先順位/評価順序になってるんだよ。
  • Creating Objects (The Java™ Tutorials > Learning the Java Language > Classes and Objects)

    mohno
    mohno 2024/02/07
    Javaのnewは演算子じゃないどうこうと流れていた元ネタがOracleで、それが“以前は正しかった”なら、目くじら立てるような話じゃなさそう。/C++は演算子だし、オーバーロードさえできる(例外がなかったころの名残り)
  • JavaScriptの演算子の優先順位と「禁止ルール」の一覧

    ただし、種別は以下の通りです。 prefix (前置演算子) …… もとの式の手前に何個でもつけられる演算子。 例: -~-~x postfix (後置演算子) …… もとの式の直後に何個でもつけられる演算子。 例: x.foo()`bar`[0] postfix once …… もとの式の直後に1個だけつけられる演算子。 例: x++ は可能だが x++-- はパースされない。 逆に ++--x はパースされるが、構文とは別のルールで禁止される。 (後述) infixL …… 中置演算子で左結合 (演算子の優先度が同じ場合は左側にあるほうが優先される) 例: 0.1 + 1.0 - 1.0 は (0.1 + 1.0) - 1.0 になる infixR …… 中置演算子で左結合 (演算子の優先度が同じ場合は右側にあるほうが優先される) 例: 2 ** 2 ** 3 は 2 ** (2 **

    JavaScriptの演算子の優先順位と「禁止ルール」の一覧
    mohno
    mohno 2022/02/07
    これだと「x++ ++」と「++ ++x」は違う仕組みでエラーになるということなのか。
  • Goに三項演算子が採用されない理由

    Goには「なぜ三項演算子がないの?」という意見を時々見かけます。言語開発側の意見と僕の見解をまとめていきますー。 FAQ その回答はGoのFAQに明瞭に書かれています。 Goに?:演算子がないのはなぜですか? Goには3項テスト操作がありません。 同じ結果を得るには、次を使用できます。 Goに?:がない理由は、言語の設計者が、操作が頻繁に使用されて不可解な複雑な式を作成するのを見ていたためです。 if-else形式は、長くなりますが、間違いなく明確です。 言語に必要な条件制御フロー構造は1つだけです。 ネストを許す GoPythonもif-elseが文であり、式として扱えない方針を採りました。式として扱えないということは、一定の構文でのみ記述が可能ということです。三項演算子はその性質上式として扱えることになります。 式として扱える場合なにが書けるようになるのかというと、各項や条件に式が書

    Goに三項演算子が採用されない理由
    mohno
    mohno 2021/04/10
    「コードカバレッジ」←Goは論理演算の短絡評価ないのか、と思ったら、普通にあるみたいだし、だったら「f1() && f2()」でf2が呼ばれないケースあるよね。と思ったら、FAQに書いてあるのは訳されている最初の理由だけか。
  • 1