変数とはデータを格納しておく領域、またはその個々の領域に付けられた識別子のことです。
変数はふつうメモリ上に確保され、値を代入したり参照したりすることができます。
C言語で使える「変数」の値は、かならずしも数値でなくてもよく、文字列でもかまいません。
しかし、文字列を変数の値に使うにあたっては、文字数の管理など煩雑な事項が多いので、当面は、数値を入れられた変数をあつかいます。
変数を使用する手順は以下のとおりです。
変数の使用を宣言する（必要ならば変数に初期値を与えること＝初期化もできます）。
変数へ値を代入します。
変数の値を参照します。
変数の宣言の形式は
記憶域クラス指定子opt 型修飾子opt 型指定子 変数の識別子;
となります。
記憶域クラス指定子と型修飾子はそれぞれ省略できます。
また記憶域クラス指定子、型修飾子、型指定子の順序はこの通りでなくてもかまいません。
記憶域クラス指定子、型修飾子、型指定子については後述します。
また、変数の宣言と同時に初期化することもできます。
//例 int型の変数を宣言し、0で初期化します。
int main(void)
{
	int i=0;
}
同じ型の変数は「,（コンマ）」で区切って一行で宣言できます。
//例 int型の変数i, j, kを一行で宣言します。
int main(void)
{
	int i, j, k;
}
変数にデータを格納することを代入と呼びます。
代入の形式は
変数名 = 式;
となります。
「=」は代入演算子と呼ばれ、左辺の変数の識別子が指す変数に右辺の式の値を代入します。
数学における等号とは異なるので注意してください。
式とは定数、変数、関数の返却値などを演算子を使って結合したものです。
変数と式のデータ型が異なる場合、式のデータ型を変数のデータ型に自動的に変換する（暗黙の型変換）。
その際、変数のデータ型が式のデータ型より小さい場合、文字型又は整数型同士の場合、上位ビットが切り捨てられ『JISX3010:2003』p.32「6.3.1.3 符号付き整数型及び符号無し整数型」、
変数が文字型又は整数型で式が浮動小数点型の場合、小数点以下切捨てとなり『JISX3010:2003』p.32「6.3.1.4 浮動小数点型及び整数型」、
浮動小数点型同士の場合、精度が落ちる『JISX3010:2003』p.32「6.3.1.5 浮動小数点型」。