ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
C++で変数を宣言するには、「型 変数名 = 初期値;」のように、データの種類を表す「型」と「変数名」を書きます。たとえば整数を入れる変数なら int x = 5; のように書き、これで x という名前の整数変数が値 5 で使えるようになります。
| この記事の要点 |
|---|
|
基本の書き方
C++では、変数を使う前に「どんな種類のデータを入れるか」を表す型とともに宣言します。もっとも基本的な形は次のとおりです。
|
型 変数名 = 初期値; |
たとえば、整数を入れる変数 x を 5 という値で宣言するには次のように書きます。宣言と同時に初期値を与えることを初期化と呼びます。
|
#include <iostream> int main() { int x = 5; std::cout << x << std::endl; return 0; } |
|
5 |
初期値を省略して int x; とだけ書くこともできますが、その場合の値は定まりません(後述の「落とし穴」を参照)。原則として、宣言と同時に初期化することをおすすめします。
主な型
変数の型によって、入れられる値の種類や扱える範囲が変わります。C++でよく使う基本的な型は次のとおりです。
| 型 | 扱うデータ | 宣言の例 |
|---|---|---|
int |
整数 | int n = 10; |
double |
小数(実数) | double pi = 3.14; |
char |
1文字 | char c = 'A'; |
bool |
真偽(true / false) | bool ok = true; |
std::string |
文字列 | std::string s = "hello"; |
char は 'A' のようにシングルクォートで1文字を、std::string は "hello" のようにダブルクォートで文字列を表します。std::string を使うには #include <string> が必要です。
初期化の書き方
C++では初期値の与え方が複数あります。次の3つはいずれも、値 5 で int 型の変数 x を初期化します。
|
int x = 5; // 代入の形(もっとも基本) int x{5}; // 統一初期化(波かっこ) int x(5); // かっこによる初期化 |
このうち波かっこ {} を使う書き方を統一初期化(リスト初期化)と呼びます。さまざまな型で同じ書き方が使えるうえ、値が型に収まらない場合(たとえば小数を整数に詰めるなど)に警告やエラーになりやすく、意図しない値の切り捨てを防ぎやすいという利点があります。新しく書くコードでは {} を用いる書き方が推奨されることが多いです。
auto による型推論
型のところに auto と書くと、コンパイラが初期値から型を自動的に判断します。これを型推論と呼びます。次の2つは同じ意味です。
|
auto x = 5; // int と推論される auto pi = 3.14; // double と推論される auto s = std::string("hi"); // std::string |
auto は型名が長くなりがちな場面でコードを簡潔にできますが、初期値が必須です。初期値がなければ型を決められないため、auto x; はエラーになります。何の型になるか読み手に伝わりにくくなる場合もあるので、わかりやすさとのバランスで使い分けます。
const による定数
宣言時に const を付けると、その変数はあとから値を変更できない「定数」になります。設定値や円周率のように、書き換えてはいけない値に使うと安全です。
|
const int MAX = 100; // MAX = 200; ← エラー(変更できない) |
定数の宣言については、定数の宣言でより詳しく解説しています。
変数のスコープ(有効範囲)
変数には、その変数が使える範囲であるスコープがあります。波かっこ { } の中で宣言した変数は、その中だけで有効なローカル変数になり、かっこを抜けると使えなくなります。一方、関数の外で宣言した変数はグローバル変数となり、プログラム全体から参照できます。
|
#include <iostream> int g = 100; // グローバル変数 int main() { int local = 5; // ローカル変数(main の中だけ) std::cout << g + local << std::endl; return 0; } |
|
105 |
グローバル変数はどこからでも書き換えられるため、どこで値が変わったか追いにくくなりがちです。基本的には必要な範囲だけで使えるローカル変数を優先し、グローバル変数は最小限にとどめるとよいでしょう。
よくある落とし穴
| 落とし穴 | 説明 |
|---|---|
| 未初期化変数の不定値 | int x; のように初期化せずに宣言したローカル変数の値は定まりません(不定値)。その値を読むと結果が予測できないため、必ず初期化してから使います。 |
| 暗黙の型変換 | int n = 3.9; のように小数を int に入れると、小数部が切り捨てられて 3 になります。意図しない値になりやすい点に注意します。統一初期化 int n{3.9}; なら警告やエラーになりやすく、ミスに気づけます。 |
| シャドーイング(変数の隠れ) | 内側のスコープで外側と同じ名前の変数を宣言すると、内側ではそちらが優先され、外側の変数が一時的に見えなくなります。どちらを指しているか紛らわしいバグの原因になります。 |
シャドーイングの例を示します。同じ x という名前でも、内側の波かっこの中では新しく宣言した方が使われます。
|
#include <iostream> int main() { int x = 1; { int x = 2; // 外側の x を隠す std::cout << x << std::endl; // 2 } std::cout << x << std::endl; // 1 return 0; } |
よくある質問(FAQ)
Q. 宣言と初期化は何が違いますか?
A. 宣言は「この名前でこの型の変数を使う」とコンパイラに伝えることです。初期化は宣言と同時に最初の値を与えることを指します。int x; は宣言のみ、int x = 5; は宣言と初期化を同時に行っています。値が定まらない事故を避けるため、宣言と同時に初期化するのが基本です。
Q. int x = 5; と int x{5}; はどちらを使うべきですか?
A. どちらも結果は同じ整数変数になります。波かっこ {} を使う統一初期化は、値が型に収まらない場合に警告やエラーになりやすく、意図しない切り捨てを防ぎやすい利点があります。新しいコードでは {} を選ぶとより安全です。
Q. auto はいつ使えばよいですか?
A. 初期値から型が明らかな場合や、型名が長くて記述が冗長になる場合に便利です。ただし auto は初期値が必須で、読み手に型が伝わりにくくなることもあるため、可読性とのバランスで使い分けます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?