現在、天国にいけるC言語入門 ヘキサ構造体は理想郷とつながっています 理想郷の仲間とともにC言語を学んでいきましょう

ようこそ 天国にいけるC言語入門 ヘキサ構造体へ


ようこそ


天国にいけるC言語入門 ヘキサ構造体へ



進行役のアレサともうします。


よろしくおねがいいたします。


本書は


天国にいけるC言語入門シーズン1の続編となっています。


天国にいけるC言語入門シーズン1


では


プログラムの記述の仕方

コンパイル

printf関数の使い方

変数の型の仕組み

2進数の性質

データのメモリへの格納され方

などなど・・・の


C言語の基本的な事柄を学ぶことができます。


天国にいけるC言語入門シーズン1へは


こちらのアドレスからアクセスすることができます。


https://kakuyomu.jp/works/1177354054881541562


天国にいけるC言語入門 ヘキサ構造体では


if文の使い方

for文の使い方

配列の仕組み

ポインタ変数の仕組み

ハードディスクにファイルを作製しデータを保存する方法

構造体の仕組み

などなど・・・の


C言語の基本的な事柄の解説が

会話形式でおこなわれていますの。


最初のエピソードから順番によみはじめることも


あるいは


本書の右上の≔印をクリックするか


以下の


アドレスをクリックされると


https://kakuyomu.jp/works/1177354054881541503


本書の目次が表示されますので


目次から必要なところを選び出して


お読みになることもできます。


また


天国にいけるC++言語入門の目次へは


こちらのアドレスからアクセスすることができます

👇

https://kakuyomu.jp/works/1177354054884384072




本書を読みやすいように


本書の右上にある


あぁ印をクリックして


表示されるビューワー設定から


文字の大きさ

文字を明朝体で表示するか


ゴシック体で表示するか


などを


お好みの設定にすることもできます。


天国にいけるC言語入門 ヘキサ構造体



天国にいけるC言語入門とデータをフィードバック(情報交換)しあい


協力し合いながらともに


新芽が二葉になり、二葉が若葉に成長する植物のように


天に向かってのびてゆく


C言語参考書です。


本書は


天国にいけるC言語入門とは


お互いにデータをフィードバック(情報交換)しあい


協力し合いながらともに成長する関係


つまり


お互いに



            ヘキサ構造体   



の関係にあります。


ですので


天国にいけるC言語入門の付属というわけでなく


お互い同士が成長を支える 同等な関係となっています。


本書はランダムに記事を生成していきますので


???、はわわ???な部分が多数(笑)ありますが


ヘキサ構造体となっておりますので


いずれは理解できる仕組みとなっています。



ヘキサ構造体についてはまた別のエピソードで


お話したいですの。



また


天国にいけるC言語入門とあわせてお読みになると


理解がぐんとすすむでしょう。


それでは、


いろいろと


天国にいけるC言語入門と


データをフィードバックしてみましょう。


本文中のソースコードはすべてコピーアンドペースト


を行い


お使いのエディタに貼り付け


実際に実行を行うことができます。


皆様の学習にお役立てください。





変数の型charについての考察


(半角英数字1文字分の)文字データを格納するchar型の変数




実際に(半角英数字1文字分の)文字データをchar型の変数に


格納してみます。


ここでは aという文字を


char型の変数characterに代入してみましょう。


その際


a

シングルクォーテーションで囲い


'a'

としたものを


char型の変数characterに代入します。


そうしなければ


aのままでは


文字データとしてコンパイラに認識されません。


aをそのまま


ソースコード上で記述してしまうと


コンパイルエラーが表示されることになります


シングルクオーテーション(')で囲んで


'a'


と記述してはじめて


               🌞文字データ🌞



としてコンパイラに認識されます。


同様に


1を


シングルクオーテーションで囲んで


'1'


と記述すれば


数値データ1でなく

文字データ'1'とコンパイラに認識されます


では


数値データ1

文字データ'1'の違いとはなんでしょうか?


数値データ1

文字データ'1'

ではメモリに格納されるデータがことなってきます。


char型の変数に

数値データ1を格納する場合

メモリには

00000001(8ビット)

保存されます


char型の変数に

文字データ'1'を格納する場合

メモリには

‭00110001‬(8ビット)

保存されます


以下のプログラムを実行すると

👇


#include <stdio.h>


int main()

{

char character;


character = 'a';

printf("%c\n", character);

return 0;

}


プログラムの実行結果は


a


となります。


characterのchar型の変数宣言


char character;


を実行するとき


変数名character には1文字ではなく9文字もつかえるのに


char型の変数には1文字しか格納できないのは おもしろいとおもいます。


%c 出力変換指定子は


          🌞文字データまたは文字データを格納した変数🌞


に対して用いられ



文字データ(半角英数字1文字)をコマンドプロンプト画面にprintf出力表示する際、使用されます。


文字データ(半角英数字1文字)をコマンドプロンプト画面にprintf出力表示したいときには


かかせない出力変換指定子ですね。


%d 出力変換指定子ではコマンドプロンプト画面に文字出力はできず整数値出力しかできません。


では char型の変数宣言を行わず


直接、文字データ'a'だけをprintf関数の第2引数に用いて


コマンドプロンプト画面に


a


をprintf出力表示してみましょう。


次のプログラムをご覧ください

👇


#include <stdio.h>


int main(void)

{


printf("%c\n", 'a');


return 0;

}


プログラムの実行結果は


a


となります。


文字データ'a'のデータ情報をコンピュータのどこかのメモリに格納しなければ


printf出力表示させることはできません。


ということは


文字データ'a'は


characterのchar型の変数宣言


char character;


をおこない


生成されるchar型の変数characterに


character = 'a';

代入しなくても


自動的に


どこかのメモリに


変数の型char型の形式で格納されていると思われます。 


なぜなら


他の変数の型 int,float.doubleでは数値データのみしか格納できない仕組み


となっているからです。(注意 考え方は良いのですが実際には違います 文末のコーナーをご覧ください)





ここで何の脈絡もなく(^^)


======================


この天国にいけるC言語入門 ヘキサ構造体では


何の脈絡もなく、突然、題目が切り替わります。


ヘキサ構造体、こちら側の世界では、


順序だてて 進行するという概念がないのです。


======================


お話がきりかわります。



ためしに%cでなく%dで'a'をprintf出力表示してみると


#include <stdio.h>


int main()

{


printf("%d\n", 'a');


return 0;

}


プログラムの実行結果


97


このように

プログラムの実行結果は97となります。


不思議ですね。


'a'という文字データを%d出力して97という数値が得られています。


a以外の文字b、cも


コンパイラにこれは文字ですよ~と


認識させるために


'b'

'c'


というようにシングルクォーテーション' 'でくくり


文字データとし


%d出力変換指定子をつかってprintf出力表示してみると


'b' 98

'c' 99

'd' 100

'e' 101

'f' 102

'g' 103

'h' 104

'i' 105

'j' 106

'k' 107

'l' 108

'm' 109

'n' 110

'o ' 111

'p ' 112

'q ' 113

'r ' 114

's' 115

't' 116

'u' 117

'v' 118

'w' 119

'x' 120

'y' 121

'z' 122


のように文字に対応した整数値が


コマンドプロンプト画面に表示されます。


このような


文字データに対応した整数をASCII code(アスキーコード)とよびます。


これらのアスキーコードは


文字データに割り振られており


逆に


アスキーコードを使って


アスキーコードに対応する文字データを


コマンドプロンプト画面にprintf出力表示することができます


以下のプログラムがその例となりますの。


#include <stdio.h>


int main()

{


printf("%c\n", 97);


return 0;

}


プログラムの実行結果


a


アスキーコード97を用いて


a


をコマンドプロンプト画面に表示することができました。


このように


アスキーコードに対応する文字をprintf出力表示するには


%c出力変換指定子がもちいられます


以下のプログラムのように


整数値をprintf出力表示する%d出力変換指定子を用いたならば


#include <stdio.h>


int main()

{


printf("%d\n", 97);


return 0;

}


プログラムの実行結果


97


そのまま


97


が表示されますね。




はいっ


なになに


8ビットは、1オクテットである・・・


わかりました。







注意


〇  〇  〇  〇  〇


実際には


printf("%c\n", 'a');


のように


1バイトのデータ量で表される文字データ 'a'が printf()の引数として渡される場合


4バイトの(int型の)データ量をもつ整数値データとしてprintf()に渡されています。


詳しくは


文字データ 'a'自体には


97


という数値データが割り当てられている


すなわち


2進数で


01100001


という数値データが割り当てられているのですが


printf("%c\n", 'a');


のように


文字データ 'a'が printf()の引数として渡される場合


データ処理の関係上


int型(4バイト)の整数値データに変換されて渡されることになります


すなわち


01100001(char型に格納された1バイトの数値データ)

00000000000000000000000001100001(int型に格納された4バイトの数値データ)


に変換されて

printf()の引数として渡されることになります





  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る