変数
変数とは、データをメモリに記憶するために必要なもので、データ保管用の箱のようなものをイメージするとわかりやすいかと思います。
そのデータ保管用の箱である変数を使うためには、決めるべき2つのことがあります。1つは、箱の種類。もう1つは、箱の名前です。
一般的に、箱の種類のことを、「変数の型」といいます。また、箱の名前を「変数名」と呼びます。この2つをプログラムの中で決めることによって、自動的に箱の場所と大きさが割り当てられます。箱の場所のことを「アドレス」と呼びます。
この変数を使うことでプログラムの中のデータのやり取りを行うことができるようになります。
変数名
変数名には、次のルールがあります。
予約語とは、C#で使用される型の名前、制御文、修飾子の名前になります。
代表的な予約語をあげましたが、このような予約語以外で変数の命名をします。
変数の型
変数を定義するときに型を指定する必要があります。この型の指定により、変数の種類と大きさが決まります。C#の変数の型には、次のようなものがあります。
型名 | サイズ[バイト] | 説明 | 範囲 |
sbyte | 符号つき整数 | -27~(27-1) | |
short | 2 | 符号つき整数 | -215~(215-1) |
int | 4 | 符号つき整数 | -231~(231-1) |
long | 8 | 符号つき整数 | -263~(263-1) |
byte | 1 | 符号なし整数 | 0~(28-1) |
ushort | 2 | 符号なし整数 | 0~(216-1) |
uint | 4 | 符号なし整数 | 0~(232-1) |
ulong | 8 | 符号なし整数 | 0~(264-1) |
float | 4 | 浮動小数点数 | ±1.5×10-45~±3.4×1038 |
double | 8 | 浮動小数点数 | ±5.0×10-324~±1.7×10308 |
decimal | 16 | 10進数データ | ±1.0×10-28~±7.9×1028 |
bool | 1 | 論理型 | true / false |
char | 2 | 文字型 | 0~(216-1) |
string | – | 文字列型 | – |
void | – | 型なし | – |
変数の書き方
変数を使うために、宣言文を書きます。
宣言文は、次のように書きます。
変数の型 変数名 ;
最初に入れておきたい値がある場合、初期値を代入しておくこともできます。
変数の型 変数名 = 値 ;
宣言文の一番最後には、セミコロン「;」を付けます。これにより一文が完結したことをコンパイラに知らせます。このセミコロンがないとコンパイル時にエラーメッセージが出ますので忘れないように注意が必要です。
文字をchar型の変数に代入する場合は、シングルクォーテーション「’ ‘」、
文字列をstring型の変数に代入する場合は、ダブルクォーテーション「” “」で文字や文字列を囲います。
浮動小数点数は、小数点を付けて表しますが、e又はEを付けて指数で表現することもできます。この場合、e,Eの後ろに続く数値が10のべき乗の値となります。
改行などの特殊な文字を代入する場合、「\」と「文字」で表現します。
バックスラッシュとエンマークは同じ文字です。
数値を変数に代入するとき、C#コンパイラでは、小数点数値をdouble型に、整数値を大きさに応じてint型、uint型、long型、ulong型に自動割り当てします。
型を指定したい場合は、サフィックスと呼ばれる接尾文字を付けて明示的に指示します。
サフィックス | データ型 | 例 |
U | uint | uint uiData = 123U; |
L | long | long lData = 123L; |
UL | ulong | ulong ulData = 123UL; |
F | float | float ftData = 1.23F; |
D | double | double dbData = 1.23D |
M | decimal | decimal dmData = 1.23M |
定数
定数とは、プログラムの実行前から値が決まっていて、プログラム実行中にその値が変わらないときに使用するデータです。
誤ってデータを書き換えないようにするため、変更のない値や文字、文字列などに対しては、定数を使用します。
定数は、変数の宣言と同じように書くのですが、変数の時との違いは、型の前に「const」という文言を付けることです。
const 変数の型 変数名 = 値 ;
定数の場合は、必ず、宣言時に値を代入する必要があります。
宣言以降、定数データを変更しようとするプログラムがあれば、コンパイル時にエラーとなって通知されます。これにより誤った変更を防止することができます。
シンボル定義
シンボルが定義されているかどうかで、処理などを切り替える場合にシンボル定義を使います。
シンボル定義は、次のように書きます。
#define シンボル名
シンボル名は、一般的に大文字で記述されます。
シンボル定義の記述の最後にセミコロン「;」がないことに注意が必要です。
この例では、DEBUGというシンボルの定義があるので「#if(DEBUG)」から「#endif」の間のプログラムを有効としてコンパイルします。したがって、プログラムの実行結果として「Debug」という文字列が出力されます。
「#define DEBUG」という行をプログラムから削除した場合、「Debug」という文字列の出力はされなくなります。
ここで使用している「#if-#endif」は、条件付きコンパイルに使用するプリプロセッサです。
C言語では、「#define 記号定数名 置き換える値」のように記号定数として、#defineを使っていましたが、C#では、この使い方はできません。C#で記号定数を定義するとコンパイルエラーとなります。
列挙定数
列挙定数とは、整数定数を順番に並べたものです。
列挙した整数定数に数値指定しない場合、0から順次整数値が割り振られていきます。
定数で特に数値に意味合いがないものや数値を順番に割り振りたいものを作りたいときに列挙定数を使うと便利です。
列挙定数は次のように書きます。
enum 列挙タグ名:データ型 { 定数リスト }
データ型は、char型以外の整数型の指定ができますが、次のように省略も可能です。
enum 列挙タグ名 { 定数リスト }
データ型を省略した場合は、定数リストをint型として扱います。
列挙定数の参照は、
列挙タグ名.定数リストの要素
のように列挙タグ名と定数リストの要素をドット演算子で接続して記述します。
booの「NO」には、「0」、「YES」には、「1」が割り当てられます。
monは、「JAN」に「1」が指定されているので、「JAN」は、「1」が割り当てられ、以降、「FEB」に「2」、「MAR」に「3」といったように整数値が順次割り当てられることになります。
コメント