天国にいけるC言語入門 ヘキサ構造体 ver5.2130
int型、char型に格納されているにかかわらず数値データを%c出力変換指定子を使ってprintf出力表示するときはint型に格納し直され文字の画像データ(文字)がコマンドプロンプト画面に表示されます
Cooporate and Make it a Success!😊
int型、char型に格納されているにかかわらず数値データを%c出力変換指定子を使ってprintf出力表示するときはint型に格納し直され文字の画像データ(文字)がコマンドプロンプト画面に表示されます
int型、char型の形式、どちらの形式でメモリに格納されているにかかわらず
int型、char型の形式でメモリに格納されている
数値データを%c出力変換指定子をつかってprintf出力表示すると
文字の画像データ(文字)がコマンドプロンプト画面に表示されます
char型の変数aに数値データ109を代入し
%c出力変換指定子をつかって変数aをprintf出力表示すると
👇
#include<stdio.h>
int main(void)
{
char a = 109;
printf("%c\n", a);
return 0;
}
プログラムの実行結果
m
char型の変数aに数値データ109を代入しているので
109は
1バイトのメモリに
01101101
と格納されています
ですが
printf("%c\n", a);
のように
printfの引数として
aが渡されると
データ処理の関係から
109は
4バイトのメモリに
00000000 00000000 00000000 01101101
と格納し直されます
つまり
int型の形式(4バイト)で格納し直されることになります
つづいて
int型の変数aに数値データ109を代入し
%c出力変換指定子をつかって変数aをprintf出力表示すると
#include<stdio.h>
int main(void)
{
int a = 109;
printf("%c\n", a);
return 0;
}
プログラムの実行結果
m
さらに
数値データ109を直接
printf関数の第2引数に代入し
%c出力変換指定子をつかって109を直接printf出力表示しても
#include<stdio.h>
int main(void)
{
printf("%c\n", 109);
return 0;
}
プログラムの実行結果
m
となります
数値データ109を直接
printf関数の第2引数に代入したときの数値データ109も
データ処理の関係上
自動的にint型の形式(32ビット)でメモリに格納されています
ソーラー「なるほどぉ
とにかく
数値データ
109
を
%c出力変換指定子をつかってprintf出力表示すると
文字mが表示されるんだね」
逆に
mをコンパイラに文字データとして認識させるために
シングルクォーテーション' 'で囲んだ
文字データ'm'をchar型の変数aに代入し
%d出力変換指定子をつかって変数aをprintf出力表示すると
109が表示されます。
#include <stdio.h>
int main()
{
char a = 'm';
printf("%d\n", a);
return 0;
}
プログラムの実行結果
109
char型の変数aに文字データ'm'を代入すると
1バイトのメモリに
01101101(数値データ109)
が格納されることになります
ですが
printf("%d\n", a);
のように
printfの引数として
aが渡されると
データ処理の関係から
01101101(109)
は
4バイトのメモリに
00000000 00000000 00000000 01101101
と格納し直されます
つまり
int型の形式(32ビット)で格納し直されることになります
さらに
文字データ'm'を直接
printf関数の第2引数に格納し
%d出力変換指定子をつかって文字データ'm'を直接printf出力表示しても→
#include <stdio.h>
int main()
{
printf("%d\n", 'm');
return 0;
}
プログラムの実行結果
109
→このプログラムの実行結果をみていただいても
おわかりになられますように
109が表示されます。
このときも
文字データ'm'自体は
まず
1バイトのメモリに
01101101(数値データ109)
と格納されるのですが
printf("%d\n", 'm');
のように
printfの引数として
文字データ'm'が渡されると
データ処理の関係から
01101101(数値データ109)
は
4バイトのメモリに
00000000 00000000 00000000 01101101
と格納し直されます
つまり
int型の形式(32ビット)で格納し直されることになります」
ソーラー「そっか
いままでのことをまとめると
%c出力変換指定子をつかって
数値データ109(数値データ109を格納した変数)をprintf出力表示すると
文字m(文字の画像データ)が
コマンドプロンプト画面に表示されるんだね。
この場合の
109は文字の画像データmに割り振られた
アスキーコードとなってるんだ。
(アスキーコードとは
文字の画像データに割り振られた番号のことで
その番号を用いて
コンピュータは文字の画像データをよびだしています)
逆に
その文字のアスキーコードが知りたければ
%d出力変換指定子をつかって
その文字データをprintf出力表示すると、
そう
今の場合は
文字データ'm'でしたね。
その文字データ'm'に対応する
アスキーコード(数値)109が
コマンドプロンプト画面に表示されるんだね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます