基礎 · 02
変数と値
値に名前を付けて、あとで使ったり変えたりします。
変数は値に付けた名札です。
下の例は名前と年齢を変数に入れて表示し、年齢を 1 増やしてもう一度表示します。
name = "Lara"age = 10print(name + " " + str(age))age = age + 1print(age)const name = "Lara";let age = 10;console.log(name + " " + age);age = age + 1;console.log(age);const name: string = "Lara";let age: number = 10;console.log(name + " " + age);age = age + 1;console.log(age);public class Main { public static void main(String[] args) { String name = "Lara"; int age = 10; System.out.println(name + " " + age); age = age + 1; System.out.println(age); }}using System; class Program{ static void Main() { string name = "Lara"; int age = 10; Console.WriteLine(name + " " + age); age = age + 1; Console.WriteLine(age); }}#include <iostream>#include <string> int main() { std::string name = "Lara"; int age = 10; std::cout << name << " " << age << '\n'; age = age + 1; std::cout << age << '\n';}#include <stdio.h> int main(void) { const char *name = "Lara"; int age = 10; printf("%s %d\n", name, age); age = age + 1; printf("%d\n", age); return 0;}name = "Lara";age = 10;コンソール.書く(name + " " + age);age = age + 1;コンソール.書く(age);Lara 10 11
ポイント
=は「等しい」ではなく、「右の値を左の名前に入れる」という意味です。
だからage = age + 1が成り立ちます。- 変数を作るときに型(整数、文字列など)を書く言語があります。
値が自分の型を知っているので書かない言語もあります。 - 変えない値は定数にします。
定数にもう一度入れるとエラーになります。 - 整数には入る大きさに限りがあります。
32ビットのintは2,147,483,647(約21億)までなので、もっと大きい数は64ビット整数(約 9.2×10^18 まで)を使います。
言語ごとの書き方
| Python | age = 10 — 型は書きません。定数の文法がないので、 MAX_SCORE のような大文字の名前で約束するだけです。整数に大きさの制限はありません。 入れ替えは a, b = b, a |
|---|---|
| JavaScript | let age = 10、定数は const(再代入すると実行中に TypeError: Assignment to constant variable.)。数は 2^53(約 9×10^15)までしか正確ではありません。 入れ替えは [a, b] = [b, a]、文字の中に入れるのは ${age} |
| TypeScript | let age: number = 10 — 型を書かなくても値から推論します。const に再代入するとコンパイルエラー。ほかは JavaScript と同じです |
| Java | int age = 10;、文字列は String、var で推論させることもできます。定数は final、大きな数は long。入れ替えは一時変数で |
| C# | int age = 10;、文字列は string、var も使えます。定数は const、大きな数は long。入れ替えは (a, b) = (b, a)、文字の中に入れるのは $"{age}" |
| C++ | int age = 10;、文字列は std::string、auto で推論させることもできます。定数は const、大きな数は long long。入れ替えは std::swap(a, b) |
| C | int age = 10;、文字列は const char *(または char 配列)。定数は const、大きな数は long long。入れ替えは一時変数で。 文字と数は printf("%s %d\n", name, age) のように場所に入れます |
| Craykon | age = 10; — 型は書かず、定数はありません。数は 2^53 まで正確です。 入れ替えは一時変数で。 自分 はキーワードなので変数名に使えません |
よくある間違い
最初の値なしで足していったC · C++
int total;
total += 5;
printf("%d\n", total);→ でたらめな値(ゴミ値)から始まって、合計がおかしくなります
int total = 0; のように最初の値を入れます。
Java・C# はこのコードをコンパイルエラーで止めてくれます。
a = b; b = a; で入れ替えた
a = 1; b = 2;
a = b;
b = a;→ a も b も 2 です。1行目で a のもとの値が消えたからです
一時変数を使います:t = a; a = b; b = t;
ブロックの中で初めて作った変数を外で使ったCraykon
もし (真) {
y = 1;
}
コンソール.書く(y);→ y はまだ作っていない名前だというエラー
ブロックより前で y = 0; と先に作ります。
(Python は外からも見えます。)
言語ごとの違い
Python は文字と数を
Python は文字と数を
+ で直接つなげません("Lara " + 10 → TypeError: can only concatenate str (not "int") to str)。str(age) で変換するか f"{name} {age}" を使います。