{ }codelper

学ぶ › C

基礎 · 02

変数と値

値に名前を付けて、あとで使ったり変えたりします。

変数は値に付けた名札です。
下の例は名前と年齢を変数に入れて表示し、年齢を 1 増やしてもう一度表示します。

#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;}
stdout
Lara 10
11

ポイント

  • = は「等しい」ではなく、「右の値を左の名前に入れる」という意味です。
    だから age = age + 1 が成り立ちます。
  • 変数を作るときに型(整数、文字列など)を書く言語があります。
    値が自分の型を知っているので書かない言語もあります。
  • 変えない値は定数にします。
    定数にもう一度入れるとエラーになります。
  • 整数には入る大きさに限りがあります。
    32ビットの int は 2,147,483,647(約21億)までなので、もっと大きい数は64ビット整数(約 9.2×10^18 まで)を使います。

言語ごとの書き方

Pythonage = 10 — 型は書きません。
定数の文法がないので、MAX_SCORE のような大文字の名前で約束するだけです。
整数に大きさの制限はありません。
入れ替えは a, b = b, a
JavaScriptlet age = 10、定数は const(再代入すると実行中に TypeError: Assignment to constant variable.)。
数は 2^53(約 9×10^15)までしか正確ではありません。
入れ替えは [a, b] = [b, a]、文字の中に入れるのは ${age}
TypeScriptlet age: number = 10 — 型を書かなくても値から推論します。
const に再代入するとコンパイルエラー。
ほかは JavaScript と同じです
Javaint 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)
Cint age = 10;、文字列は const char *(または char 配列)。
定数は const、大きな数は long long。
入れ替えは一時変数で。
文字と数は printf("%s %d\n", name, age) のように場所に入れます
Craykonage = 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 は文字と数を + で直接つなげません("Lara " + 10 → TypeError: can only concatenate str (not "int") to str)。
str(age) で変換するか f"{name} {age}" を使います。

練習問題