プロが教えるわが家の防犯対策術!

C言語の右ビットシフトで、以下のプログラムの結果について、納得できずにいます。

dを右にシフトすると、上位ビットには0が入るのではないでしょうか?

よろしくお願いします。

プログラム
unsigned char d='0';
printf("%c\n", d);
printf("%c\n", d>>5);
結果

A 回答 (2件)

期待する結果は何だったんでしょうか?



おそらく上位ビット0入ってると思いますよ。

unsigned char d = '0'; // 文字コードがASCIIであるなら 0x30 と同義
printf("%x\n", d);
printf("%x\n", d >> 5);

0x30 >> 5 → 0x01
文字コード 0x01 の文字を表示させようとして見た目おかしくなってるだけかと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/23 22:12

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


'0'と0の違いって理解できてますか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/23 22:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!