アスキーコード?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hazimete

アスキーコード?

#1

投稿記事 by hazimete » 8年前

printf("%d", '1');  が49
printf("%c", 1);  が・
になる理由がわかりません教えてください。

1のアスキーコードは31なのでprintf("%d", '1'); は31になると思っていました。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: アスキーコード?

#2

投稿記事 by みけCAT » 8年前

1のアスキーコードは0x31 (16進数で31、10進数で49)であり、%dは渡されたint型の数を10進数で出力するので、
アスキーコードが使われている場合、printf("%d", '1');は49を出力します。

%cは渡されたint型の数を文字コードとする文字(通常、指定された値の1バイト)を出力します。
ASCIIコードの1は制御コードのSOH (Start Of Heading) です。
たまたま使った端末がSOHを・で表示する仕様になっていたのでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

hazimete

Re: アスキーコード?

#3

投稿記事 by hazimete » 8年前

ありがとうございます。解決いたしました。^^

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: アスキーコード?

#4

投稿記事 by Dixq (管理人) » 8年前

printf("%x", '1');
とすれば期待の結果が表示されると思いますよ。
%xは16進数表示を意味します。

返信

“C言語何でも質問掲示板” へ戻る