現在、天国にいける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()の引数として渡されることになります
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます