「C言語/データ型と変数の高度な話題」の版間の差分

削除された内容 追加された内容
C言語/データ型と変数 2017年8月19日 (土) 06:33‎ より分割。前半とレベルが違いすぎる。
 
→‎型指定子: 表の半角スペース調整、ついでにsyntaxhighlight
204 行
 
== 型指定子 ==
型指定子とは、表のいずれかの組み合わせである。
 
{|class="wikitable"
|-
! 型指定子 !! 意味
|-
| [[#主なデータ型|void]] || 型なし
|-
| [[#主なデータ型|char]] || 文字型
|-
| [[#主なデータ型|int]] || 整数型
|-
| [[#主なデータ型|float]] || 単精度実浮動小数点型
|-
| [[#主なデータ型|double]] || 倍精度実浮動小数点型
|-
| [[#主なデータ型|short]] ||
|-
| [[#主なデータ型|long]] ||
|-
| [[#主なデータ型|signed]] || 符号付き
|-
| [[#主なデータ型|unsigned]] || 符号なし
|-
| [[C言語/構造体・共用体|struct]] || 構造体(後ページで説明)
|-
| [[C言語/構造体・共用体|union]] || 共用体(後ページで説明)
|-
| [[#enum|enum]] || 列挙体
|-
|}
239 ⟶ 240行目:
データ型は扱いたいデータの種類や値の範囲によって決定する。
 
【下の表を参照しつつ読むこと】データ型には 型なし、文字型、整数型、実浮動小数点型、などがある。
型なし とは値を持たない特殊なデータ型でvoidを用いる。
 
文字型とは1バイト文字を格納するためのデータ型でcharを用いる。また、小さな整数を格納するためにも用いられる。負の数も扱う場合にはsignedを先頭に付ける。
 
整数型とは整数を格納するためのデータ型でintを用いる。整数型には扱う値の範囲に応じて様々な種類が存在する。扱う値の範囲が狭い順にshort int, long int, long long intなどがある。
負の数を扱わない場合にはunsignedを先頭につける。
実浮動小数点型とは浮動小数点数を格納するためのデータ型でfloatまたはdoubleを用いる。浮動小数点数とは有効数字部と指数部とによる実数の近似値の表現方式である。またfloatとdoubleとではdoubleのほうが精度が高い。
 
負の数を扱わない場合には unsigned を先頭につける。
*次に主なデータ型を表にまとめた。ビット長及び扱える値の範囲は処理系によって異なる場合がある。以下は主な32ビット処理系の場合である。実際のビット長及び扱える値の範囲はlimits.h及びfloat.hにより確認できる。
 
実浮動小数点型とは浮動小数点数を格納するためのデータ型で float または double を用いる。浮動小数点数とは有効数字部と指数部とによる実数の近似値の表現方式である。またfloatとdoubleとでは doubleのほうが精度が高い。
 
* 次に主なデータ型を表にまとめた。ビット長および扱える値の範囲は処理系によって異なる場合がある。以下は主な32ビット処理系の場合である。実際のビット長及び扱える値の範囲は limits.h およ float.h により確認できる。
 
{|class="wikitable"
! データ型の種類 !! データ型 !! データ型の名称 !! ビット長 !! 扱える値の範囲
|-
| 型なし || void || void型 || - || -
|-
| rowspan="2"| 文字型 || signed char || 符号付き文字型 || 8 || -128~127128 ~ 127
|-
<!--||-->|(unsigned) char||(符号無し)文字型||8||0~255
|-
| rowspan="8"| 整数型 || (signed) short int || (符号付き)短整数型 || 16 || -32768~3276732768 ~ 32767
|-
<!--||-->|unsigned short int || 符号無し短整数型 || 16 ||0~65535 0 ~ 65535
|-
<!--||-->|(signed) int || (符号付き)整数型 || 32 || -2147483648~2147483647
|-
<!--||-->|unsigned int || 符号無し整数型 || 32 || 0~4294967295
|-
<!--||-->|(signed) long int || (符号付き)長整数型 || 32 || -2147483648~2147483647
|-
<!--||-->|unsigned long int || 符号無し長整数型 || 32 || 0~4294967295
|-
<!--||-->|(signed) long long int || (符号付き)長長整数型 || 64 || -9223372036854775808~92233720368547758079223372036854775808 ~ 9223372036854775807
|-
<!--||--> |unsigned long long int || 符号無し長長整数型 || 64 ||0~18446744073709551615 0 ~ 18446744073709551615
|-
|rowspan="2" | 実浮動小数点型 || float || 単精度実浮動小数点型 || 32 ||
最小の正の数1.175494351e-38、
最大値3.402823466e+38
|-
<!--||-->|double || 倍精度実浮動小数点型 || 64 || 最小の正の数 2.2250738585072014e-308、 最大値 1.7976931348623158e+308
|-
|}
 
表中のデータ型にある「()」は省略可能であることを表す。<br>
※signed※ signed int型およびunsigned int型のビット長は処理系により異なる場合が特に多い。<br>
一般に16ビット処理系ならば16ビット、32ビット処理系ならば32ビット、64ビット処理系ならば32ビットである。<br>
 
303 ⟶ 310行目:
 
=== struct ===
構造体については、単元『[[C言語/構造体・共用体]]を参照せよ。
 
=== union ===
共用体については、単元『[[C言語/構造体・共用体]]を参照せよ。
 
=== enum ===
312 ⟶ 319行目:
列挙体を用いることで、整数定数の代わりに識別子を使うことができ、
ソースコードの可読性を高める。
 
<source lang=c>
<syntaxhighlight lang="C">
//例 列挙体の使用例
# include <stdio.h>
 
enum eNumber
333 ⟶ 341行目:
printf("nの値は、%d。\n", n);
}
</syntaxhighlight>
</source>
上の例では、ソースコード中で0, 1, 2の代わりにZERO, ONE, TWOを用いることができる。
 
列挙体の型枠の宣言の記述は次のようになっている。<ref>列挙体の型枠という用語はこの教科書独自のものであり、『JISX3010:2003』に出てくるわけではないので注意してください。</ref>
 
<source lang=c>
<syntaxhighlight lang="C">
enum タグ名
{
344 ⟶ 353行目:
:
};
</syntaxhighlight>
</source>
 
「タグ名」で、列挙体の型枠に名前を付ける。
列挙体のメンバ(要素のこと)を列挙定数と呼ぶ。
使用する列挙定数の数だけ、「列挙定数=定数式,」を含める。
 
「列挙定数」で、その列挙定数の識別子を定める。
「定数式」はint型で表現可能な値をもつ整数定数式でなければならない。
「列挙定数」は、型intをもつ定数として宣言され、
この型の定数が許されるところならばどこに現れてもよい。
 
「=定数式」でその定数式をもつ列挙定数を定義する。
「=定数式」は書かなくてもよい。
359 ⟶ 371行目:
 
列挙体の宣言の記述は次のようになっている。
 
<source lang=c>
<syntaxhighlight lang="C">
enum タグ名 変数名のリスト;
</syntaxhighlight>
</source>
 
タグ名で、列挙体の型枠を指定する。
変数名のリストで列挙体に名前を付ける。
368 ⟶ 382行目:
なお、列挙体の型枠の宣言と列挙体の宣言とを、同時に行うこともできる。
次のように記述する。
 
<source lang=c>
<syntaxhighlight lang="C">
enum タグ名
{
列挙定数 = 定数式,
:
:
} 変数名のリスト;
</syntaxhighlight>
</source>
 
この場合、タグ名は省略することができる。
 
列挙体を使用するときの記述は次のようになっている。
 
<source lang=c>
<syntaxhighlight lang="C">
列挙定数
</syntaxhighlight>
</source>
 
列挙定数の値は、列挙体の型枠の宣言で列挙定数に指定した定数となる。