こんにちは､ そしてようこそ｡
今回の講義では､ 前回の講義で紹介したデータ型のいくつかを説明したいと思います｡
データ型が重要なのは､ 変数を宣言するときにこれを提供しなければならないからです｡
そして､ 実際のコンパイラに､ どれだけのメモリを作りたいかを伝えるのです｡
つまり､ サイズにもこだわりがあるんですね｡
そこで､ コンパイラはこの情報を必要とするのですが､ ここではプログラミング言語cがサポートしているものについてお話ししましょう｡
ここまでで､ cにはデータの種類が異なる多くの種類の変数があることがわかりました｡
それは､ 変数の作成と初期化からわかることです｡
基本的に整数や数値を格納するための型を持つことができます｡
非整数の数値を格納する型は､
UM科学記法やブール値（真偽値）のようなものがあります｡
また､ 文字など保存する必要のあるデータもあり､
これは1文字または多くの文字で､ 文字列と呼ばれる｡
しかし､ 私たちはこのような異なるタイプのデータがあることを知っています｡
繰り返しになりますが､ C言語プログラムが強力であるためには､ データを操作する必要があり､
あらゆる種類のデータを操作する必要があります｡
そこで､ cが基本的なデータ型をサポートしている例をいくつか紹介します｡
cにはたくさんのデータ型がありますが､
今日この講義でお話するのはintという基本的なものです｡
そして､ これらのデータ型は特別なキーワードであることを忘れないでください｡
つまり､ C言語でintと言えば､ コンパイラは「ああ､ これはデータ型なんだ」と認識するわけです｡
そこで､ int､ float､ double､ charやcare､ アンダースコアのboolについて話をしたいと思います｡
これらは主に使用するもので､ 保存したいデータの種類やデータの大きさに応じて､
さらにさまざまなバリエーションがあります｡
つまり､ これらのタイプの違いは､ メモリの量です｡
データ型の指定でのデータ型はそれだけです｡
割り当てが必要なメモリのことで､ どのようなアーキテクチャかによって異なるのです｡
でも､ メモリと量によって､ 保存できる値の範囲が決まってきそうです｡
そのため､ 特定の種類のデータを保存するために割り当てられるストレージの量は､
コンパイラにとって重要な意味を持ちます｡
使っているコンピュータに依存するのです｡
そして､ これを機種依存という｡
ですから､ 異なるハードウェアを持つLinuxシステムと､ あるハードウェアを持つWindowsシステムでプログラムを見る場合､
整数がメモリ上で4バイトになるかもしれないし､ 8バイトになるかもしれない､
やはりそれは違いますね｡
つまり､ 保存したいデータに応じてどれだけのメモリを割り当てるかは､
実行中のマシンに依存するわけです｡
つまり､ 整数が32ビット（4バイト）を占めることもあれば､
8バイトを占めることもあるわけです｡
ではまず､ intについて説明します｡
最も広く使われているデータ型の一つです｡
積分値､ 小数点以下を含まない値､ 整数を格納できるデータ型です｡
これは､ 変数intを作成して数値を格納するときに､
このデータ型を識別することになります｡
また､ 変数のデータ型､ invertの前にマイナス記号を置くと､ その値が負であることを示すことができます｡
だから､ マイナス記号が実際のリテラルを進めている場合｡
つまり､ 変数を作ってデータを代入するときに､
負の数を値に入れると負の数になってしまうということです｡
つまり､ intsは負の数を格納することができる､ ということです｡
また､ 符号付き整数である｡
その意味については､ これから詳しく説明しますが､ 符号付き整数は､ 正､ 負､ 0のいずれかになることを意味しているだけです｡
そして､ その前にマイナスをつけることができるわけです｡
整数の前にxの文字で0がつく場合｡
ここでは､ 定数の話をしているわけです｡
ここでは､ int型にデータを代入する場合の話をしています｡
ここに格納できるデータの種類を説明しているのです｡
それで､ データを割り当てるとき､ 変数にデータを割り当てる方法は､
それを習ったので知っています｡
先ほどは､ データ型を定義して､ それをイコール演算子で代入しただけでした｡
これでint型に値を割り当てることができるようになりました｡
15のように､ 最も直感的で簡単な方法である数字を割り当てることも可能です｡
しかし､ 16進数も割り当てることができます｡
プログラム言語のコンピュータがそれを可能にする｡
整数を格納する変数に16進数を代入したい場合､
0とxを前に置くだけで､ コンパイラに「これは16進数です」と伝えることができる｡
16進数は16進数なので､ a〜fの文字を格納することができます｡
つまり､ 16進数では0xFEFODのようになります｡
そのため､ 16進数の数値を入力するようなプログラムを時々見かけますが､
携帯電話のintは10進数か整数しか入力できないと思うかもしれません｡
しかし､ 異なる表現を保存することも可能です｡
そして､ これは0xが先行するものなんですね｡
158のマイナス10と0は､ すべて整数の変数に割り当てることができる有効な定数の例です｡
数字と数字の間にスペースを埋め込むことはできません｡
また､ 999より大きな値を代入しようとすると､ カンマが使えません｡
だから､ xという変数に12､ 000と値を代入しようとしないでください｡
フロート､ これも本当に重要なデータ型､ 基本的なデータ型の一つです｡
浮動小数点数､ つまり小数点以下を含む数値のデータを格納できる変数です｡
だから､ 3のような値｡
125. 8とマイナス｡ 001はすべてfloat型の変数に代入できるデータの有効な例です｡
cには浮動小数点数の定数もあります｡
これは科学的な表記で表すことができる｡
ですから､ 例えば､ 1. 7e4､ これは浮動小数点数で､
科学的記数法で表され､ 値1を表します｡
7×10の4乗｡
ということは､ 10000の17倍で170000になりますね｡
Aダブル､ フロートにとてもよく似ています｡
小数点以下の数字を記憶しています｡
ただ､ サイズが大きいので､ より大きな数値を保存することができるのが違いです｡
ということは､ より多くのデータをメモリに集めるということになりますね｡
だから､ floatでは物足りない､ 小さすぎるというときにはdoubleを使いたいのです｡
フロートは､ アーキテクチャにもよりますが､ 例えば8バイトを格納します｡
つまり､ マイナス32000からプラス32000までの値を格納することができるのだ｡
同じデータとメモリをdoubleで表現しようとすると､ さらに大きな数値を格納することができる｡
そのため､ 浮動小数点数よりもはるかに大きな数百万､ 数百万､
数百兆の長さに対して､ 基本的に2倍の有効桁数を使用したいのです｡
つまり､ ほとんどのコンピュータは2倍値を64ビット､ つまり8バイトで表現しているのです｡
フロートは通常4つで､ ダブルやIがそこにスポークするかもしれません｡
そしてそれは､ より多くのデータを保存できることを意味します｡
そして､ 変数を作成する方法は､
変数名を付ける前にダブルキーワードを言うことです｡
浮動小数点定数は､ cコンパイラではすべてdouble値として扱われます｡
だから､ それはデフォルトで｡
特に何かをfloatにしたい場合は､ 代入するときに末尾にf2をつければいい｡
つまり､ 浮動小数点数の定数を明示的に表現するには､ そのfをそこに12個置けばいいわけです｡ f.
アンダースコアのブール値｡
0と1という値だけを格納できるデータ型です｡
このブーリアンという言葉､ よく耳にしますよね｡
ブール式はboolで､ すべてtrueかfalseを意味する｡
イエスかノーの0か1かです｡
つまり､ 基本的に二者択一で表示されるわけです｡
また､ 判断文について話すときには､ ブール値やブール式についてたくさん話すことになります｡
ブール変数は､ ブール条件､ つまり真か偽かの答えを示す必要があるプログラムで使用されます｡
したがって､ たとえば､ このタイプの変数は､ ファイルからすべてのデータを読み込んだかどうか､
イエスかノーかを示すために使われるかもしれない｡
すべてのデータをファイルから読み込んだか？
0ならfalse､ 1ならyesで､ これはこれから説明します｡
つまり､ 0は偽の値､ 1は真の値を示すのに使われる｡
つまり､ 真偽値であっても､ メモリへのデータの格納方法は､
数値としては0か1なのです｡
しかし､ その数値は､ 0が偽､ 1が真を意味します｡
そのため､ ブール値をプリントアウトする場合､ trueやfalseではなく､ 0や1の値がプリントアウトされることになる｡
しかし､ それらは真か偽かを意味します｡
2つの値しか持つことができません｡
そこで､ いくつかのデータを使って例を挙げてみましょう｡
では､ これをコードブロックに落とし込んで､ どのように行うか見てみましょう｡
ここでまた､ 基本的なプログラムと､ 主なルーチンを紹介します｡
変数の宣言は､ データ型を指定する必要があることは承知しています｡
intだけを宣言する前に､ 複数を宣言する方法がわかりました｡
これで､ 実際にfloatのようなものを宣言できるようになりました｡
float キーワードを使用するだけで､ インテリセンスが助けてくれます｡
そして､ 命名規則に従って､ もう一度ジェイソンと言い､ 値を割り当てることができます｡
フロートは小数点以下の桁数で構成されています｡
だから23と言えるのです｡ 22で､ その中にfloatが含まれているので､ それを代入しています｡
つまり､ 値23を含むfloat型の変数を初期化して作成しているわけです｡
33､ そこで最後にセミコロンがあることにお気づきでしょうか｡
ダブルでも同じことができる｡
別の名前を考えなければならなかったのです｡
Jason2とも言えますね｡
ここでは､ ただ数字が大きくなるだけだとわかっていても､ 意味のある名前をつけたいのです｡
だから､ そうそうたる顔ぶれになってしまう｡
また､ やろうと思えば科学的な記法で表現することもできる｡
ここにeを加えて11とすることもできる｡
しかし､ その大きな数値はfloatでは格納できないので､
doubleを使うことになるのですね｡
boolを作成することができます｡
また､ ここではbool変数だけですが､ 通常はキャメルケースが必要です｡
そして､ ここでは､ プリントアウトしたときに必ずしもそれが含まれていないにもかかわらず､ 単にtrueと言ったり､
1に設定したりすることができます｡
そして､ 必ずコマンドをコンパイルして実行したいものです｡
また､ bool型は通常､ 他の名前への別名を持っているので､ 使うコンパイラによっては､ 必ずしもアンダースコアのboolだけを使う必要はない｡
これは実際にうまくコンパイルできました｡
ただ､ 警告が出るような変数を使用しているというだけです｡
cには異なる基準があることを忘れないでください｡
C89規格では､ 今まで習ったようにアンダースコアのboolを使い､ 大文字のbでアンダースコアのbullなどを使わなければいけないということです｡
C99規格では､ boolデータ型にtrue falseの値を使用することができるようになっています｡
だから､ アンダースコアのboolを使って､ my
Booleanという変数を作り､ それを1か0に等しくする必要はないのです｡
1真､ 0偽｡
C99ではそんなことする必要ないでしょ｡
アンダースコアboolはC89規格にしかありません｡
ですから､ C99コンパイラーを使用している場合は､ 実際にboolデータ型を使用することができます｡
あとは､ include standard boolと言えばいいだけです｡
h.
これは､ 従来のboolデータ型と異なるデータ型を使用できるマクロを搭載する予定です｡
そのため､ 標準のboolを含めると hの場合､ アンダースコアのboolの代わりにboolと言えば､
それをデータ型として認識するようになりました｡
1や0と言わず､ trueと言ったり､ boolという別のブーリアンにしてfalseと言ったりすることができます｡
アンダースコアのboolをデータ型に使うのが嫌なら､ これもほとんどの言語では使われていないのですが､
通常はboolやBoolean include standard boolといったものを使います｡
hを指定してboolを指定すると､
boolデータ型のtrueとfalseキーワードが使えるようになります｡
では､ 他のデータ型はどうかというと､ 「なぜもっとデータ型が必要なんだ」と思うかもしれません｡
私は数字について､ なぜ数字をさまざまな方法で表現する必要があるのか､ といった話をよくしました｡
これから説明する文字についてはまだ話していませんし､
その他にも新しいデータ型がいくつかあります｡
しかし､ 数値に関しては､ 数値が小数か非小数のint
doubleとfloatであることを話してきました｡
そして､ おそらくそれで十分だと言うでしょう｡
そして､ 通常はintで十分です｡
必要なのは､ アリだけ｡
インは結構使うんですよ｡
しかし､ cは柔軟な言語である｡
そして､ その利点の一つとして､ 他の整数型を表現できるデータ型が多くあることが挙げられます｡
そして､ プログラマーにある程度の柔軟性を与えることができます｡
ユースケースによって､ データによって､ さらに精度を高めることができるのです｡
これは､ cがさらに効率化される方法の一つです｡
もし､ あなたが､ とても具体的な何かを持っているのなら｡
部分的に積分や整数のように特定のデータ型を指定すると､
プログラムの実行が速くなります｡
そのため､ プログラマーにオプションと柔軟性を与え､ データ型を追加することができるのです｡
整数型は､ 範囲や負数の使用可否が異なる場合があります｡
これからお話しするデータ型は整数ですが､ これらは浮動小数点や倍数にも当てはまります｡
intにはすでにいくつかのキーワードが割り当てられていますが､
必ずしも必要なわけではありません｡
つまり､ int型､ float型､ double型をより細かく指定することもできますし､
これらのキーワードを単独で使用することもできます｡
例えば､ short intと言えば､ データ型ですね｡
そして､ その意味やlong int､ unsigned int､ short double､
long doubleをお伝えします｡
以上､ 3つの形容詞を持つ追加データ型です｡
しかし､ int､ float､ doublesを一緒に使う必要もない｡
ショート､ ロング､ あるいは......といった具合に､
具体的なデータを保存しておくことができます｡
しかし､ これはより精度を高め､ プログラムをより効率的にするためのものです｡
繰り返しになりますが､ ほとんどの場合､ int､ double､ floatを使うだけでしょう｡
しかし､ もう一つ上級のC言語になってくると､ int､ double floatに加え､
short､ long､ unsignedを使い始めることになります｡
例えば､ int型とshort型､ 両方使えると言いました｡
int型よりも使用するストレージが少ないので､ 省スペースで使用できます｡
ですから､ 大量のメモリを必要とするプログラムを書いていて､ そのプログラムが効率よく､
メモリを大量に使わないようにする必要があれば､ shortsを作ればいいのです｡
そのため､ int型ではなくshort型を使用することで､ より柔軟で効率的なコードを作成することができます｡
短く使う必要はありませんが､ メモリ使用量は少なくなります｡
また､ ロングも同様です｡
より多くのメモリーを使い､ 実際にはより大きなデータになっているのです｡
つまり､ long endはintよりも多くのストレージを使うので､ より大きな整数値を格納することができます｡
long floatと言ったり､ longと単体で言ったりすることもでき､ より大きな整数値を格納することができます｡
なぜdoubleを使わないのかというと､ doubleには小数点以下の数字があるからです｡
そのため､ 非常に大きなintを格納したい場合は､ longを使用することができます｡
そのため､ long long int型やlong long型は､ longよりも多くのストレージを使用する可能性があります｡
そしてまた､ アーキテクチャに使用しているコンピュータのプラットフォームに依存します｡
値を割り当てることができ､ これらすべての異なるタイプを使用することができます｡
多くの場合､ 付記する文字が違うのです｡
例えば､ ここでlong longの定数値を代入する場合､
大文字のlか小文字のlを最後につけるだけで､ その値がlong longとして代入されるわけですね｡
短編の一部をやっても同じです｡
また､ 最後にサフィックスを付けることで､ コンパイラが何を扱っているかを明示的に知ることができる｡
そのため､ 型指定子は倍数体にも適用できる｡
先ほど申し上げたように､ このショートとロングはダブルで長く言うことができます｡
そして､ ここでは､ 私たちは赤字2017と呼ばれる長い二重を作成します｡
長時間のダブルスでも大丈夫です｡
先ほどの大文字のLでも､ 小文字のlでも､ intsと同じように使用することができます｡
unsignedに関してお話したshortとlong以外のデータ型に関しては､
int､ doubles､ floatsにunsignedという接頭語を設定することができ､
これは非負の値を持つ変数にのみ使用されます｡
つまり､ intはマイナスを持たない数値を格納することができ､ マイナスと言うだけであることを覚えておいてください｡
intに負の数を格納したくない場合は､ unsigned intまたは単にunsignedと宣言すれば､
それに代入されるすべてのものが正の数になるようにすることができます｡
今､ 理論的にはそうなっているんです｡
それを強制しないコンパイラもあります｡
しかし､ 仮にunsigned intを作ったとして､ 負の数を代入しようとすると､ コンパイラは文句を言うはずです｡
だから､ 例えば無署名エンカウント｡
そしてまた､ これによって､ 実際のthe energy変数を拡張して､ 正の値のみを許容することができるようになりました｡
つまり､ これらの異なるデータ型､ より指定されたデータ型をすべて使用することで､
プログラムをより効率的にすることができるのです｡
また､ int型､ float型､ double型､ shorts signed型､
short signed int型に適用できるsignedデータ型があります｡
どのタイプとも併用することで､ より意図を明確にすることができる｡
サイン入りショートイント､ ショートパンツ､ どれも同じようなものです｡
符号は､ ネガティブにもポジティブにもなりうるということです｡
以上が､ 今回お話したい基本的なデータ型です｡
これらは最もよく使うものであり､ 次の講義でさらに2､
3のことを話します｡
プログラムをより効率的にするためでない限り､
通常はショートやアンサイン､ ロングの使用に踏み込む必要はないでしょう｡
しかし､ これらのデータ型はすべて､ 変数を宣言するときに変数名の直前に提供されます｡
そして､ これらの異なるタイプの変数にデータを割り当てる際に､ 大文字のlや小文字のlといったサフィックスを使用することで､
明示的な意図を持たせることができます｡
ありがとうございます｡