C に ||= 演算子がないのはなぜですか? 何か技術的な理由があるのでしょうか、それとも言語の美学のためでしょうか?
編集どうやらPerlとRubyにはこれがあるようですが、尋ねたときは知りませんでした。
C に ||= 演算子がないのはなぜですか? 何か技術的な理由があるのでしょうか、それとも言語の美学のためでしょうか?
編集どうやらPerlとRubyにはこれがあるようですが、尋ねたときは知りませんでした。
C では、この演算子はまったくナンセンスです。次の例について考えてみてください。
char ind = 0;
ind |= 1;
ind |= 0;
// ind is still 1
これはまさに||=
達成することを行っています。bool にキャストできないすべての型について、これはとにかくばかげています。何か不足していますか?
型推論のない他のすべてのプログラミング言語では、この演算子はブール値に対してのみ有効です。
99% の状況ではあまり多くないため、( |= とは異なり) c には含まれていないと思います。|| ブール演算子です。言語のブール値はゼロであり、ゼロではありませんが、true の整数またはポインターへの割り当ては実際にはどうあるべきですか。1、-1、42? それはあまりメリットがないのに、非常に多くのあいまいさをもたらします。