数学では A > B > C で、BはAより小さくてCより大きいと表現することがよくあると思いますが、多くのプログラミング言語では何故 (A>B && B>C) と表現しなければいけないのでしょうか。
うろ覚えで間違っているかもしれませんが、昔読んだC言語の入門本ではプログラムは1つずつしか処理できないみたいに説明されていた気がしますが、A>B>CではコンパイラがA>Bと読んでしまうから文法的に無理ということでしょうか?それとも表現ができない理由は単純にプログラマーがソースコードを読みにくいからでしょうか?
また、そういった表現ができるプログラミング言語は存在しますか?
Python と C 言語では言語が違うからです。
自分で言語作ってみればわかるのでは。
それ以外は「仕様」と言っても差し支えない話です。
> それとも表現ができない理由は単純にプログラマーがソースコードを読みにくいからでしょうか?
その言語を作ったプログラマーにとって読みにくいからという可能性はあります
>も<も二項演算子の一つに過ぎないのだから素直にコンパイラを実装したらA>B>Cは通ってしまうはず。それを敢えて文法エラーにしてる言語が多いのはバグの温床だからでしょう。
実際C言語ではA>B>Cは文法としては正しくエラーになりません。ただ実行結果はおそらく意図した結果ではないでしょう。ABCがintだったとして左からA > Bが評価された時点でboolになり、次に> Cはbool > intの比較になるわけで意図したコードではないのは明らかです。
Cには標準では論理型は無いし、C99でできた_Boolも結局0と1を入れる整数型でしかないし。
> A > Bが評価された時点でboolになり
なりません。Cの比較演算子が返すのは0または1のint型(JIS X3010でも参照してください)。
最近 https://teratail.com/questions/361799#reply-492740 でそんな話をした記憶が。
booleanとintの比較を禁止したJavaなんかでは、比較演算がbooleanを返すのでa>b>cはエラーになりますが、それは積極的にa>b>cをエラーにした、というわけではないでしょう。
回答7件
あなたの回答
tips
プレビュー