変数とは?
変数とは、何かを入れておく
箱のことである。何かとは、数値や文字のことである。変数の型とは?
変数には色々なものが入れられるが、1つの変数には1つの種類の物しか入れられない。型とは、その種類のことである。
基本のデータ型 データ型 扱える値の範囲とサイズ 説明 char(キャラ)
文字型-128〜127
1バイト'a'や'1'という1文字を扱う int(イント)
整数型-32768〜32767
2バイト100や-20という整数を扱う long(ロング)
倍長整数型-2147483648〜2147483647
4バイトintでは扱えない桁数の多い整数を扱う double(ダブル)
倍精度実数型±1.7×10^-308〜±1.7×10^308
8バイト3.14159のような小数点数を扱う 変数の宣言方法
基本のデータ型の変数を宣言するには次のように行う。
#include <stdio.h> main() { char c; int a; long la; double b;複数の変数を同時に宣言する
例えばint型の変数を3つ宣言する場合、
int a;
int b;
int c;
と宣言してもいいが、
int a, b, c;
とまとめて宣言することもできる。
変数に値を入れるには、代入演算子「=」を使用する。代入演算子の左側は変数、右側は入れたい値(定数)である。逆にするとエラーになる。
1.int型の変数に値を入れる
int a, b;
a = 19;
b = -20;2.long型の変数に値を入れる
long a, b;
a = 19L;
b = -20L;long型の定数には末尾に
Lまたはlを付ける。付けなくてもエラーにはならないが、自動的に型変換が行われるため、処理が重くなる。3.double型の変数に値を入れる
double a, b;
a = 3.14159;
b =0.0;double型の定数には必ず小数点以下を付ける。小数点をつけずに整数のままでもエラーにはならないが、自動的に型変換が行われるため、処理が重くなる。
4.char型の変数に値を入れる
char a, b;
a ='a';
b ='0';文字定数は必ず「
'(シングルクォーテーション)」で囲まなければならない。変数名と区別するためである。
変数を宣言すると同時に値を入れることができる。これを
初期化と呼ぶ。
int a = 0;
int b = 0;もちろんこのコードは
int a = 0, b = 0; と書くこともできる。
C言語に限らず、ほとんどのプログラミング言語では数値や変数に対して演算を行える。以下はC言語の場合の説明である。
1.算術演算子の種類
int a, b = 15;の場合 演算子 機能 使用例 計算結果 + 加算 a = b + 10; aの値は25 − 減算 a = b - 10; aの値は5 * 乗算 a = b * 10; aの値は150 / 除算 a = b / 10; aの値は1 % 剰余算 a = b % 10; aの値は5 2.演算の優先順位
数学と同じように、演算には優先順位がある。例えば
a = 10 + 2 * 3;
この計算式の場合、変数aに格納される値は16となる。
この式で足し算を先に行いたい場合は
a = (10 + 2) * 3;
のように、先に計算したい式をカッコで囲む。この計算式の場合、変数aに格納される値は36となる。補足
BASICなどには存在するが、C言語には何故か
べき乗を計算する演算子「^」が存在しない。当然
a = b ^ 3;
と記述するとエラーになる。べき乗を求める場合は
a = b * b * b;
としなければならない。覚えておこう!
数学のような計算式以外にも、C言語独特の記述方法がある。これらの記述方法はただ便利なだけではなく普通の式と比べ、処理速度がほんの少しだけ速くなるというメリットがある。ぜひ覚えておこう。
1.代入演算子の応用
例えば
a = a + b;は変数aに変数bの値を足して変数aに代入する。この式はと記述できる。a += b;
このように「〜して代入」シリーズはこの他にも色々ある。
演算子 機能 += 足して代入 −= 引いて代入 *= 掛けて代入 /= 割って代入 %= 余って代入 <<= 左シフトして代入 >>= 右シフトして代入 &= ANDして代入 |= ORして代入 ^= NOTして代入 インクリメント・デクリメント
a = a + 1;をa += 1;と記述できることは前に書いたが、1を加える場合のみまたはa++;と記述できる。これを++a;インクリメントと呼ぶ。
同様に、1を減らす場合はまたはa--;と記述できる。これを--a;デクリメントと呼ぶ。
++や--を変数の前に書いても後ろに書いても計算結果は同じだが、動作が微妙に違う。この違いについては後で解説する。
ちなみに**や//などは存在しない。
変数名や関数名をつける場合、C言語では次の規則に従わなければならない。
- 使える文字は「A〜Z」「a〜z」「0〜9」「_(アンダースコア)」のみ。
- 先頭の文字はアルファベット又はアンダースコアで無ければならない。数字は使えない。
- 文字数の最大は32。33文字以上でもエラーにはならないが、33文字目以降の文字は無視される。
- 予約語は使用できない。ただし、予約語が含まれる文字列は使用できる。
(例、forは×だが、forceは○)- 大文字と小文字は区別される。 (例、nameとNameは別物)
さまざまな演算子を使い、変数の値がどうなったかを確認しよう。
問題1
次の計算を実行した後の各変数の値は?
int a=10, b=20;
a += b;
b *= 10;問題2
次の計算を実行した後の各変数の値は?
int a=10;
--a;
・
・(10回繰り返す)
・
問題3
次の計算式を実行した後のcの値は?
int a, b, c;
a = 3;
b = 4;
c = a + (b + a) * a;