English

基本編 - 変数と型

難易度: 🟢 初級
所要時間: 20分

📚 この章で学ぶこと


プリミティブ型

整数型

// 符号付き整数
tiny t = 127;         // 8bit: -128 〜 127
short s = 32767;      // 16bit: -32768 〜 32767
int i = 42;           // 32bit: -2^31 〜 2^31-1
long l = 1000000;     // 64bit: -2^63 〜 2^63-1

// 符号なし整数
utiny ut = 255;       // 8bit: 0 〜 255
ushort us = 65535;    // 16bit: 0 〜 65535
uint ui = 100;        // 32bit: 0 〜 2^32-1
ulong ul = 2000000;   // 64bit: 0 〜 2^64-1

浮動小数点型

float f = 3.14;       // 32bit単精度
double d = 3.14159;   // 64bit倍精度

// v0.10.0で追加:非負浮動小数点
ufloat uf = 2.5;      // 32bit非負
udouble ud = 10.0;    // 64bit非負

その他の型

bool b = true;        // 真偽値: true/false
char c = 'A';         // 文字
string str = "Hello"; // 文字列

変数の宣言

基本的な宣言

int x;           // 宣言のみ
int y = 10;      // 宣言と初期化

複数変数の宣言

int a, b, c;
int x = 1, y = 2, z = 3;

注意: Cmには型推論(varキーワード)はありません。型は常に明示的に指定する必要があります。


const修飾子(v0.11.0以降で必須)

重要な変更(v0.11.0): constキーワードは不変変数に対して必須となりました。constのない変数はデフォルトで可変です。

// v0.11.0以降:不変変数には明示的にconstが必要
const int MAX_SIZE = 100;
const double PI = 3.14159;
const string GREETING = "Hello";

// MAX_SIZE = 200;  // エラー: constは変更不可

const vs 可変変数

// 可変変数(デフォルト)
int counter = 10;
counter = 20;      // OK:再代入可能

// 不変変数(constが必須)
const int constant = 10;
// constant = 20; // エラー: const変数は変更不可

// コンパイラは変数がconstになるべきか警告を出します
int value = 42;
// 'value'が変更されない場合、コンパイラが提案:「'value'をconstにすることを検討してください」

static変数

関数内で状態を保持する静的変数です。

void counter() {
    static int count = 0;
    count++;
    println("Count: {}", count);
}

int main() {
    counter();  // "Count: 1"
    counter();  // "Count: 2"
    counter();  // "Count: 3"
    return 0;
}

static変数の特徴

  1. 初回のみ初期化 - 初めて実行される時だけ初期化
  2. 値が保持される - 関数を抜けても値が残る
  3. 関数内スコープ - 関数の外からはアクセス不可

型変換

暗黙的な型変換

int i = 10;
double d = i;    // int → double(OK)

double pi = 3.14;
// int x = pi;   // double → int(精度が失われる)

明示的な型変換(キャスト)

double pi = 3.14159;
int truncated = (int)pi;  // 3

型のサイズ

サイズ 範囲
tiny 8bit -128 〜 127
utiny 8bit 0 〜 255
short 16bit -32768 〜 32767
ushort 16bit 0 〜 65535
int 32bit -2^31 〜 2^31-1
uint 32bit 0 〜 2^32-1
long 64bit -2^63 〜 2^63-1
ulong 64bit 0 〜 2^64-1
float 32bit IEEE 754単精度
double 64bit IEEE 754倍精度
ufloat 32bit 非負単精度
udouble 64bit 非負倍精度
bool 8bit true/false
char 8bit ASCII文字

よくある間違い

❌ 未初期化変数の使用

int x;
println("{}", x);  // 警告: 初期化されていない可能性

❌ 型の不一致

int x = "Hello";  // エラー: 型が一致しない

❌ constの変更

const int MAX = 100;
MAX = 200;  // エラー: const変数は変更不可

練習問題

問題1: 型の選択

以下の値に最適な型を選んでください:

  1. 年齢(0〜150)
  2. 世界人口(約80億)
  3. 円周率
  4. ログインフラグ(成功/失敗)
解答例 ```cm utiny age = 25; // 0〜255で十分 ulong population = 8000000000; // 大きな数値 double pi = 3.14159; // 高精度 bool login_success = true; // 真偽値 ```

問題2: カウンター

関数を呼ぶたびにカウントアップするcounter()関数を実装してください。

解答例 ```cm void counter() { static int count = 0; count++; println("Count: {}", count); } int main() { counter(); // 1 counter(); // 2 counter(); // 3 return 0; } ```

次のステップ

✅ プリミティブ型が理解できた
✅ 変数の宣言と初期化ができる
✅ const/staticの使い方がわかった
⏭️ 次は 演算子 を学びましょう

関連リンク


前の章: Hello, World!
次の章: 演算子


最終更新: 2026-02-08