• ベストアンサー

見たことの無い式で解かりません。

教えていただきたいのですが 以下のようなプログラムがあったのですが、 |= が良くわからないのですが、変数bには なにが入るのでしょうか? switch(変数a) { case 定数a: 変数b |= 's'; break; } 申し訳ありませんがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

論理和複合代入演算子と思われますが、 アルファベットsと変数bの論理和をとるのも、ちょっと妙なので、演算子がオーバロードされてる可能性があります。

参考URL:
http://www.google.com/search?hl=ja&q=%E8%A4%87%E5%90%88%E4%BB%A3%E5%85%A5%E6%BC%94%E7%AE%97%E5%AD%90
psychesine
質問者

お礼

ありがとうございます

その他の回答 (2)

回答No.3

#2さんの回答で概ねいいとは思いますが、 いくらなんでも's'の2進表現が00011110というのはないでしょう。 ごく一般的なasciiなどでは0111 0011ですし、仮にメインフレームに見られるEBCDICだとしても、1110 0010ですから。 それはさておき、質問者はCの文法くらいいつでも調べられるようにすべきですね。 例えば演算子の優先順位表でも見れば、必ず出てくる演算子なのですから。 #寧ろ載せてこないのは低俗な初心者本くらい。

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.2

ビット和の複合代入です。 's'の2進表現は 00011110 なので 例えば、bの2進表現が 10010010 なら bに 10011110 が代入されるということです。

psychesine
質問者

お礼

ありがとうございます

関連するQ&A