printf("%d", '1'); が49
printf("%c", 1); が・
になる理由がわかりません教えてください。
1のアスキーコードは31なのでprintf("%d", '1'); は31になると思っていました。
アスキーコード?
Re: アスキーコード?
1のアスキーコードは0x31 (16進数で31、10進数で49)であり、%dは渡されたint型の数を10進数で出力するので、
アスキーコードが使われている場合、printf("%d", '1');は49を出力します。
%cは渡されたint型の数を文字コードとする文字(通常、指定された値の1バイト)を出力します。
ASCIIコードの1は制御コードのSOH (Start Of Heading) です。
たまたま使った端末がSOHを・で表示する仕様になっていたのでしょう。
アスキーコードが使われている場合、printf("%d", '1');は49を出力します。
%cは渡されたint型の数を文字コードとする文字(通常、指定された値の1バイト)を出力します。
ASCIIコードの1は制御コードのSOH (Start Of Heading) です。
たまたま使った端末がSOHを・で表示する仕様になっていたのでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: アスキーコード?
printf("%x", '1');
とすれば期待の結果が表示されると思いますよ。
%xは16進数表示を意味します。
とすれば期待の結果が表示されると思いますよ。
%xは16進数表示を意味します。