3

C に ||= 演算子がないのはなぜですか? 何か技術的な理由があるのでしょうか、それとも言語の美学のためでしょうか?

編集どうやらPerlとRubyにはこれがあるようですが、尋ねたときは知りませんでした。

4

2 に答える 2

4

C では、この演算子はまったくナンセンスです。次の例について考えてみてください。

char ind = 0;
ind |= 1;
ind |= 0;
// ind is still 1

これはまさに||=達成することを行っています。bool にキャストできないすべての型について、これはとにかくばかげています。何か不足していますか?

型推論のない他のすべてのプログラミング言語では、この演算子はブール値に対してのみ有効です。

于 2012-11-14T17:24:09.037 に答える
1

99% の状況ではあまり多くないため、( |= とは異なり) c には含まれていないと思います。|| ブール演算子です。言語のブール値はゼロであり、ゼロではありませんが、true の整数またはポインターへの割り当ては実際にはどうあるべきですか。1、-1、42? それはあまりメリットがないのに、非常に多くのあいまいさをもたらします。

于 2012-11-14T17:11:55.470 に答える