ページ 1 / 1
アスキーコード?
Posted: 2017年8月27日(日) 17:50
by hazimete
printf("%d", '1'); が49
printf("%c", 1); が・
になる理由がわかりません教えてください。
1のアスキーコードは31なのでprintf("%d", '1'); は31になると思っていました。
Re: アスキーコード?
Posted: 2017年8月27日(日) 17:59
by みけCAT
1のアスキーコードは0x31 (16進数で31、10進数で49)であり、%dは渡されたint型の数を10進数で出力するので、
アスキーコードが使われている場合、printf("%d", '1');は49を出力します。
%cは渡されたint型の数を文字コードとする文字(通常、指定された値の1バイト)を出力します。
ASCIIコードの1は
制御コードのSOH (Start Of Heading) です。
たまたま使った端末がSOHを・で表示する仕様になっていたのでしょう。
Re: アスキーコード?
Posted: 2017年8月27日(日) 18:13
by hazimete
ありがとうございます。解決いたしました。^^
Re: アスキーコード?
Posted: 2017年8月27日(日) 21:58
by Dixq (管理人)
printf("%x", '1');
とすれば期待の結果が表示されると思いますよ。
%xは16進数表示を意味します。