2012-02-21 9 views
4

私は時にはビット操作をするときにこれが不便だと思います(ただし、今私は具体的な例を思い出すことはできません)。私はまた、概念的に混乱していることを知っています。なぜなら、シフトは基本的に2のべき乗による乗算と除算であるからです。注文はもともとのでC.シフトがCの加減算よりも優先順位が低いのはなぜですか?

+0

IMO:シフトは乗算を行うので、乗算の優先順位(またはそれ以上)が同じである必要があります。さらに、Cでの演算子に関連する文法の愚かな選択肢ではありません。すべての '+ = * ='は左結合である方が良いでしょう。したがって、 'a + = b + = 4 'インプレース(C++での問題)に「a」を追加しました。それで、 '+ ='の優先順位がもっと低くなっているので、今日の '' 'よりもうまくいっている書式付き出力演算子のためにC++でそれを使うことができます...しかし、C++は優先順位の選択において独自の犯罪を起こしました。たとえば、 '。* - > *'は後置演算子よりも優先順位が高いはずです... – ybungalobill

答えて

5

に固定された方法を説明するために使用することはできません私はのostreamに出力を送信するために< <を使用している場合、それは、C++で便利なことができていることがわかりますが、当然の

それがC言語の作者が決めたものです。

混乱を避けるためにかっこを使用してください。

+2

「良い」答えはありませんか?これは正確ではないが、作者には理由があるのだろうか? –

+5

私は彼が「彼らは何を考えていたのですか?私はしばしば同じことを思った。 – Nemo

+1

これらの乗法演算子を追加することは、C言語の最大の間違いの1つですが、優先順位を低くすることは普遍的に合意されていると思いますが、修正することはできません。一緒に移動し、ここには何も見えません... –

関連する問題