プログラムはデータとそれを操作する命令から成り立っています。 プログラミング言語ではたいていの場合データを変数で表し命令を式で表します。 変数や式は数学でなじみのあるものですがプログラミング言語ではよりコンピュータに親和性の高い別の概念となっています。 (本来の数学に近い意味での変数と式を持つ言語もありますが)
たいていのプログラムにおいてデータを一時的に記憶しておかなければならない状況が発生します。 プログラミング言語における変数とは何かを記憶しておくための入れ物のことを指します。 しかしここで一つ問題があります。それはデータごとに必要な記憶容量、できる操作が違うことです。 例えば整数×整数はできますが、文字×文字はできません。なので変数になんでも入れることができるようにすることはできません。 そこで変数に何が入るのかを決めることにしました。これが型と呼ばれるものです。 変数にはその変数が何を入れることができるのかを表す型をつけなければなりません。 また変数には名前をつけておかなければなりません。 さて変数を構成する要素のうち変数がどういうものであるかを説明する型と名前が決まりました。 次はこの組み合わせで使用することをプログラムに書きましょう。これを変数の宣言といいます。 変数の宣言は式ではなく文ですこの違いについては後で説明します。 変数の宣言は
型[スペース]変数名(=初期値);
と書きます。初期値は変数を宣言したと同時にその変数の中身を決めることのできる機能です。 初期値がない場合C#の仕様(数を表すなら0それ以外はnull)に従って決まります。
LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。
int a = 10;
a.Dump();
このプログラムではintが型、aが変数です。そして10でaを初期化したのでaには10が入っています。 int は整数を扱うためによく使う型です。C#にはよく使うデータの型は組み込み型としていつでも使うことができます。 以下はC#における組み込み型です。 <table> <tr><th>型</th><th>説明</th></tr> <tr><td>sbyte</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>byte</td><td>符号なし 8 ビット整数(0 ~ 255)</td></tr> <tr><td>short</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>ushort</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>int</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>uint</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>long</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>ulong</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>char</td><td>Unicode 16 ビット文字(U+0000 ~ U+FFFF)</td></tr> <tr><td>float</td><td>32 ビット浮動小数点(-3.4 × 1038 ~+3.4 × 1038)</td></tr> <tr><td>double</td><td>64 ビット浮動小数点(±1.5 × 10^−324 ~ ±1.7 × 10^308)</td></tr> <tr><td>double</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>decimal</td><td>固定小数点(-7.9 x 10^28 ~ 7.9 x 10^28) / (100 ~ 28)</td></tr> <tr><td>bool</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>string</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> <tr><td>object</td><td>符号付き 8 ビット整数(-128 ~ 127)</td></tr> </table>
式とは演算子とオペランドの列と仕様書では説明されています。 オペランドとは変数、式、リテラル(定数)演算子とはそれらを操作する記号のことです。 変数は説明済みなので、リテラルについて説明します。といっても難しいことはなくプログラムを書いたときに決まっている値のことです。 例えば演習1では10はプログラムを実行中は変更できない(無理やりできないこともないですが)値なのでリテラルです。
1+1
ここで1と1がリテラルのオペランド、+が演算子です。+演算子は数学と同じように右のリテラルと左のリテラルの合計を返します。
次の通りにプログラムを書いて実行してみてください。
int a= 1+1;
a.Dump();
aの中身を1-1の結果で初期化してみましょう。
C#には以下の演算子があります。また数学と同じように優先順位があります。
演算子