変数と識別子
値を詰め込めー
ここまでで計算させてきたけど、この演算結果を 保存して再利用する ことはできなかった。悲しい。
そこで、変数 を利用する。これは値に名前を付ける機能だよ。例えば 24
を variable
という変数に 代入する っていうのは、
?「フン。
24
というのかい。贅沢な名だねぇ。」?「今からお前の名前は
variable
だ。いいかい、variable
だよ。」?「分かったら返事をするんだ、
variable
!!」
って感じ (適当)。
変数を作る
変数を作るには、
型 名前;
という文法で書くと使えるようになる。
複文の中で変数の名前を登場させることを 変数の宣言 という。
変数は 宣言した後でないと使えない。
型 のところには、変数に入れられるものを書く。整数なら int
(integer - 整数の略) を書く。型について詳しくは次のページで。
int main() {
int variable;
}
variable
という名前の変数が生まれました!元気な男の子です!(?)
変数は =
演算子をつかって 中身を変更 できる。変数 = 新しい値の式
と書く。
int main() {
variable; // これは NG。C/C++ での 名前 は、宣言した後でないと使えない
int variable;
variable = 3; // 3 に意味はない。自由に変えてね
variable = variable / 2; // 1。そして代入される
0 = variable; // これは NG。埋め込んだ値 0 を変更しようとしている
}
右の式を左の変数に入れる演算子だから、左右逆にはできない よ。方程式とは違うからね。
代入演算子 の式は、代入された変数 になる。
これによって、同じ値を代入するときに連ねて書ける。
ただし、括弧がないときは今までと違って 右から順に 処理される。
int main() {
int variable;
int variable_neo;
variable_neo = variable = 0;
variable_neo = (variable = 1); // 上と同じ順序、代入は右から順に作用する
(variable_neo = variable) = 3; // これは上の 2 つとは順序が違う
}
中身を取り出すときは、変数の 名前を他の数と同じように書く。
#include <iostream>
int main() {
int variable;
variable = 1;
variable; // 取り出しただけ
variable + 2; // 計算したが代入はしていない
variable = variable + 1; // 代入している
std::cout << variable * 2 << "\n"; // 出力を確かめてみよう
1 = variable; // NG
}
変数の名前は、わかり易い 目的に応じた名前 にしておこう。a
とか x
とかにしているとわからなくなる。
#include <iostream>
int main() {
int price; // 価格を表す変数なので
price = 108;
std::cout << price << "\n";
price = price / 2;
std::cout << price << "\n";
}
ただ、つけられない名前もある。詳しくは下で。
識別子
C++ で自由に作って使える名前は 識別子
っていう。
これは、
- 英文字 (大文字と小文字は区別される)
- 数字 (一文字目には使えない)
- アンダースコア _ やダラー $ 、日本語や中国語などの 特別な扱いがされない文字
- C/C++ で特別な意味を持つ英字句 (int、and、inline など) ではない名前
しか使えないという制約がある。
↓はすべて問題なく使用できる。英語がわからないならローマ字でもいいからわかりやすくすること。
int price;
int PRICE;
int $$$;
int something_nice;
int a_variable_which_has_very_too_long_name;
int YDK48;
int eigo_ga_wakaranai;
int nedann;
一応日本語だけの名前とかにもできるけれど、しないようにしようね。
なぜかというと、もし自分の母国語を使うのが許されるとしたら、外国人はすぐに日本語や中国語やロシア語をタイプできるかな?
int 値段;
int Спасибо;
int 不客氣;
↓は制約を満たしていないからコンパイルできない例だよ。憐れだねぇ。
int 0_is_zero;
int -minus;
int "quote";
int and;
int inline;