変数と型
プログラミングでは、値を扱うときに、「変数」という値を入れるための箱のようなものを使います。
変数には、「型」というものがあり、データの扱う種類や大きさによって使い分ける必要があります。
| 型の種類 | 扱える値 | 補足 |
|---|---|---|
| int | -2^31~2^31-1の整数 | 基本的にはこの型を使う 大体、10^9くらいまで扱える |
| unsigned int | 0~2^32-1の整数 | 符号なし整数 |
| long long | -2^63~2^63-1の整数 | int型に入りきらない場合はこの型を使う 大体10^18くらいまで扱える (正確には、「long long int」で、long long >= intの大きさが扱える) |
| float | 有効桁数6桁の実数 | 誤差が大きい |
| double | 有効桁数15桁の実数 | 誤差が小さい (基本的にはこれを使う) |
| long double | 有効桁数18桁の実数 | 誤差がより小さい (基本的には使わない) |
| char | 文字(1つの文字) | (詳しくは後日説明) |
変数を使うには、使う変数の名前や型などを「宣言」する必要があります。
宣言方法は、型と変数を空白区切りで記述します。例えば、次のようにします。
int a; //aという名前の整数型の変数を宣言する。変数名を付ける際には、次のルールを守る必要があります。
- 使える文字は、英字、数字、アンダーバーのみ。
- 1文字目に数字は使えない。
- 英字の大文字と小文字は区別される。
- 予約語(returnなど)は使えない。
- 32文字目以降は区別されない。
変数に値を入れることを「代入」といいます。
「代入」には、「=」を使います。等号の意味ではないので注意して下さい。
a = 1227;代入は、何度でも行うことができ、代入するたびに変数に入っている値が書き変わります。
ここまでに説明した、「宣言」と「代入」は同時に行うこともできます。
int a = 1227;変数の値の出力
C言語で文字列を出力するには、printf()関数を使用するのでしたね。
printf("Hello World!!\n");では、変数の値を出力するにはどうしたらよいでしょうか。
変数の値を出力するときは、「書式制御文字」で「穴埋め」します。
書式制御文字は次のようなものがあります。
| 型 | 書式制御文字 |
|---|---|
| int | %d |
| long long | %lld |
| float | %f |
| double | %lf |
| char | %c |
例えば、次のように使います。
int a = 1227;
printf("a: %d\n", a);
//「a: 1227」と出力されるprintf()関数では、ダブルクウォーテーションで囲った文字列が出力されますが、変数の値で穴埋めをしたい部分に書式制御文字を記述します。
そして、この文字列の後ろに書式制御文字の記述順にカンマ区切りで対応する変数を記述します。
つまり、次のような記述も可能です。
int m = 12, d = 27;
pritnf("%d/%d\n", m, d);
//「12/27」と出力される変数への値の入力
C言語で変数に値を入力するには、scanf()関数を使用します。
scanf()関数では、printf()関数のように、書式制御文字を用いて入力形式を指定します。
競技プログラミングでは、空白区切りで値が入力されることがほとんどなので、基本的に書式制御文字を空白区切りで記述します。
具体的には、次の通りです。
int a, b;
scanf("%d %d", &a, &b);printf()関数とは異なり、カンマ区切りで記述する変数名の前には、必ず「&」を付けてください。
[補足]
この「&」は、今後学習するかもしれない「ポインタ」が関わっています。
算術演算
算術演算には、次のようなものがあります。
| 記号 | 意味 | 使用例 |
|---|---|---|
| + | 加算(足し算) | ans = a + b; |
| – | 減算(引き算) | ans = a – b; |
| * | 乗算(掛け算) | ans = a * b; |
| / | 除算(割り算) | ans = a / b; |
| % | 余剰(余り) | ans = a % b; |
例えば、次のように書くことができます。
int a = 12, b = 27, c = 6, ans;
ans = a + b * c;
printf("a + b * c = %d\n", ans); //「a + b * c = 174」と出力される
printf("a * c = %d\n", a * c); //「a * c = 72」と出力される[補足]
「+」と「-」は、符号として使用することもできます。
例えば、「-a」のようにすることができます。
練習問題
1627 – アルミ缶の上にあるミカン – Hamako Online Judge
1638 – [第2話]計算上手の高木くん – Hamako Online Judge
