主な変数の型について
「消費バイト」については、コンパイラやCPUによってサイズが変更になる可能性があります。確実の実行環境で使われているバイト数が知りたい場合は、「sizeof関数」を使います。
分類 | 型名 | 範囲(用途例) | 消費バイト |
---|---|---|---|
整数 | char | -127~127(例:家族の人数) | 1バイト |
整数 | int | -214783648~214783647(例:年齢等) | 4バイト |
整数 | long | -2147483648~2147483647未満の数値(例:世界人口等) | 4バイト/8バイト |
小数 | float | 体重 | |
小数 | double | 特別な事情がない限り、小数はfloatではなくこちらを使う。 | |
真偽値 | bool | true or false | |
文字 | char | 半角の文字 |
整数系の文字型について
unsigned型
unsigned型をデータ型の先頭に付けることで、プラスのみの値を扱い、プラス方向に値を扱える範囲を増やすことが可能です。
例えば、char型にunsignedをつけると通常は、-128~127の範囲なのですが、「0~255」に拡大することが可能です。
昨今について
昔は、int以下のchar変数も使ったり、2バイト以下の変数も使い分ける必要がありました。
しかし、昨今ではコンピュータの性能が上がっており、整数char型や、short型を使うよりも4バイトのint型を使う方が効率がよくなっているので、少ない桁数の整数の場合でも基本的にはint型を使うようにしましょう。
オーバーフローについて
変数の値に、格納できる値を超えて格納した場合は、オーバーフローが発生します。
C言語の場合は、オーバーフローが発生した場合、変数の値が壊れてしまいますが、プログラムはそのまま続行し続けてしまいます。
非常に危険なので、設計段階でオーバーフローが起きないよう注意しましょう。
浮動小数点(小数)系の文字型について
浮動小数点型は、厳密な計算ができません。
そのため、厳密な計算が必要になってくるような金額の計算等にはfloat型やdouble型は用いてはいけません。
文字列の型
C言語では、半角文字を扱うchar型はありますが、Java等の他のプログラミング言語のように文字列を扱うためのデータ型は用意されていません。
文字列型と同じような物を使いたい場合は、C言語では下記のように記述をします。
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <stdio.h> typedef char String[1024]; int main(void) { String str = "Hello World!"; printf("%s\n",str); return 0; } |
typedef宣言
String型を宣言する際に、typedefという構文を使いました。
こちらは、既存の型に対して別名を付けることができる型になります。
上記例でいえば、char型の配列である「char[1024]」に対してStringという別名をつけています。
通常のデータ型以外にも、構造体等様々な別名を付けることができます。
文字列型を使う場合の注意点(というか制約)
上記構文を使えば、C言語でも文字列型を扱うことができますが、いくつかの制約があります。
- 1024より小さい値を代入してはいけない。
- 初期化時にしか代入できない。
- 二つの文字列は、プラス演算子で連結させることができない。
- 文字列同士を==演算子で比較することができない。
この記事へのコメントはありません。