C言語の変数とは?int, double, charの使い方を図解で解説。
int は整数、double は実数、char は1文字int x; 代入: x = 5;= は「等しい」ではなく「代入」int x = 0;)int seisu = 5; の表現 (32ビット)int seisu = 5;
double jissu = 3.14;
sizeof(int) を %zu で printf してください。double (float より精度が高い)charint(ほぼ常にこれ)long long
| 型 | 用途の例 | 範囲の目安 |
|---|---|---|
int | 個数、インデックス、点数 | 32bit環境で 約 -21億 〜 +21億 |
long long | 人口、秒数、大きなID | 最低 64bit、約 ±9.2 × 1018 |
double | 身長、平均、確率、座標 | IEEE 754 なら 15〜17桁の有効数字 |
char | 1文字 ('A'、'あ' はNG) | 通常 -128 〜 127(※ 符号は処理系依存) |
unsigned int | マイナスが出ないサイズ値 | 32bit環境で 0 〜 約42億 |
int a = 7; int b = 2; double r = a / b; // rは 3.0 になる! (3.5ではない) printf("%f\n", r); // → 3.000000
// 正しく 3.5 にするには片方を double に double r = (double)a / b; // → 3.5 // または最初から double で宣言 double a = 7, b = 2; double r = a / b; // → 3.5
int big = 2000000000; // 20億 big = big + 2000000000; // 40億...になるはず printf("%d\n", big); // 結果は未定義 (実機ではしばしば負の値が出る)
unsigned 型のオーバーフローだけは「2の冪で折り返す」と規格で明確に定義されています。long long(%lld)を使って範囲を広げる、
② INT_MAX(<limits.h>)と比較して事前にチェックする、
③ -fsanitize=undefined で gcc/clang にランタイム検出させる、のいずれか。| 型 | 書式 | 例 |
|---|---|---|
int | %d | printf("%d", 42); |
double | %f or %lf | printf("%f", 3.14); |
char | %c | printf("%c", 'A'); |
char * (文字列) | %s | printf("%s", "hello"); |
long long | %lld | printf("%lld", 9000000000LL); |
int x; // 宣言のみ。中身は不定 printf("%d\n", x); // → ゴミ値(毎回違うことも) // 正しくは: int x = 0; // 0 で初期化
_ のみ(ひらがな・漢字NG)1st はNG、first はOK)int、if、return など)age と Age は別物)a より score、x1 より radiusint seisu; // 宣言:メモリに変数の領域を確保 seisu = 5; // 代入:値を格納 ( = は「等号」ではなく「代入」!)
= は等号ではなく代入です!右辺の値を左辺の変数に格納します。x = 23; → 「xってどこ???」x = y; とすると、yの値がxにコピーされます(yの値は変わりません)。| 変数名 | 型 | 値 |
|---|
int に -100 のような負の値を入れて %d で表示int に 3000000000 を入れてみる(オーバーフロー)double x = 7 / 2; と double x = 7.0 / 2; の違いを確認char c = 'A'; を %d で表示して ASCIIコードを見るこの講座の理解度をチェックしましょう!
int 型は整数を格納します。小数には float や double、文字列には char 配列を使います。
変数名は英字またはアンダースコアで始める必要があります。数字で始まる名前や予約語(int など)は使えません。
double は倍精度浮動小数点数(約15桁)、float は単精度(約7桁)です。通常は double を使うことが多いです。