• ベストアンサー

C言語のビットシフトの質問

C言語の右ビットシフトで、以下のプログラムの結果について、納得できずにいます。 dを右にシフトすると、上位ビットには0が入るのではないでしょうか? よろしくお願いします。 プログラム unsigned char d='0'; printf("%c\n", d); printf("%c\n", d>>5); 結果 0 『

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

期待する結果は何だったんでしょうか? おそらく上位ビット0入ってると思いますよ。 unsigned char d = '0'; // 文字コードがASCIIであるなら 0x30 と同義 printf("%x\n", d); printf("%x\n", d >> 5); 0x30 >> 5 → 0x01 文字コード 0x01 の文字を表示させようとして見た目おかしくなってるだけかと。

aodesu55
質問者

お礼

ありがとうございました。 理解できていませんでした。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

printfで、書式に"%c"を使ったとき、何が出力されるか、理解してますか? '0'と0の違いって理解できてますか?

aodesu55
質問者

お礼

ありがとうございました。 '0'と0の違いを、理解できていませんでした。