ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
C++のデータ型のうち文字列以外(基本型)は、整数型・浮動小数点型・文字型・論理型の4系統に整理でき、それぞれサイズと表せる値の範囲が異なる。扱う値の大きさ・符号の有無・小数の要否に応じて適切な型を選ぶのが、正しく安全なプログラムの第一歩になる。
整数型 ― int / short / long / long long / unsigned
整数を扱う型。標準的な選択は int で、より大きい値や小さい値を扱いたいときに long 系や short を使う。型名の頭に unsigned を付けると符号なし(0以上)になり、負の値を捨てる代わりに正の最大値が約2倍に広がる。
short(short int)… 小さい整数向け。最低16ビットを保証。int… もっとも一般的な整数型。多くの環境で32ビット(4バイト)。long(long int)… 最低32ビット。Windowsでは32ビット、多くのUnix系64ビットOSでは64ビットと、環境差が大きい代表例。long long… 最低64ビットを保証。大きな整数が必要なら確実。unsigned系 …unsigned intのように付け、0以上のみを扱う。配列の添字やサイズ(std::size_t)などで登場する。
規格が定めるのは「short ≦ int ≦ long ≦ long long」という大小関係と各型の最小ビット数だけで、実際のサイズは処理系に委ねられている点に注意。
|
#include <iostream> int main() { int a = 100; // 符号あり整数 unsigned int b = 3000000000u; // 符号なし(大きい正の値) long long big = 9000000000LL; // 64ビット級の大きな整数 std::cout << a << \" \" << b << \" \" << big << std::endl; return 0; } |
浮動小数点型 ― float / double / long double
小数を扱う型。同じ小数でも精度(有効桁数)と表せる範囲が異なる。
float… 単精度。多くの環境で32ビット、有効桁はおよそ6~7桁。メモリ節約や大量データ向け。double… 倍精度。多くの環境で64ビット、有効桁はおよそ15~16桁。C++で小数を扱うときの既定の選択肢。long double…double以上の精度を持つ型。実際の幅は環境依存(80ビット・128ビット・doubleと同じなど、まちまち)。
浮動小数点数は2進数で小数を近似するため、0.1 のような値を正確に表現できないことがある。金額計算などで誤差が許されない場面では、整数(最小単位で持つ)や専用ライブラリの利用を検討する。
文字型 ― char / wchar_t
1文字を表す型。中身は文字コード(数値)であり、整数型の一種としても扱える。
char… 1バイト(規格上ちょうど1バイト=最低8ビット)。ASCIIなど1バイト文字や、バイト列の単位として使う。signed/unsignedどちらになるかは処理系依存。wchar_t… ワイド文字型。幅は環境依存で、Windowsでは16ビット、多くのUnix系では32ビット。
C++11以降には char16_t・char32_t、C++20には UTF-8用の char8_t も追加されている。なお複数文字をまとめて扱う文字列は std::string で、これは別記事の領分。本記事では1文字単位の文字型までを扱う。
論理型 ― bool
真偽(true / false)を表す型。条件分岐やフラグに使う。整数へ変換すると true は 1、false は 0 になり、逆に 0 以外の数値は true とみなされる。サイズは多くの環境で1バイト。
|
bool ok = true; double pi = 3.14159; // 小数は double が既定 char c = 'A'; // 1文字は char if (ok) { // c は文字コード65としても扱える } |
各型の一覧(サイズ・範囲は代表値)
下表のサイズ・範囲は一般的な64ビット環境での代表値であり、規格上の保証ではない。実際の値は必ず sizeof と <limits>(std::numeric_limits)で確認すること。
| 型 | 分類 | サイズ(目安) | 値の範囲(代表値) | 主な用途 |
|---|---|---|---|---|
short |
整数 | 2バイト | 約 -3.2万 ~ 3.2万 | 小さい整数・メモリ節約 |
int |
整数 | 4バイト | 約 -21億 ~ 21億 | 一般的な整数(既定) |
long |
整数 | 4 または 8バイト | 環境依存(32/64ビット) | やや大きい整数 |
long long |
整数 | 8バイト | 約 ±922京 | 大きな整数 |
unsigned int |
整数(符号なし) | 4バイト | 0 ~ 約42億 | 0以上のみ・サイズ/添字 |
float |
浮動小数点 | 4バイト | 有効6~7桁 | 軽量な小数 |
double |
浮動小数点 | 8バイト | 有効15~16桁 | 小数(既定) |
long double |
浮動小数点 | 環境依存 | double 以上 |
高精度な小数 |
char |
文字 | 1バイト | 1文字/バイト | 1文字・バイト列 |
bool |
論理 | 1バイト | true/false |
真偽・フラグ |
サイズは sizeof(int) のように書くとバイト数が得られ、範囲は std::numeric_limits<int>::max() などで取得できる。
|
#include <iostream> #include <limits> int main() { std::cout << \"int size: \" << sizeof(int) << \" byte\\n\"; std::cout << \"int max: \" << std::numeric_limits<int>::max() << \"\\n\"; return 0; } |
型の選び方の指針
- 整数は基本
int。それで足りないほど大きい値を扱うならlong longを選ぶ。 - 小数は基本
double。速度やメモリが特に重要で精度を割り切れる場合だけfloatを検討する。 - 負の値を扱わないからといって安易に
unsignedにしない。符号あり・符号なしの混在は意図しない巨大値への変換(後述)を招きやすい。 - 幅を固定したい(ファイル形式・通信・ハードウェア制御など)なら
<cstdint>の固定幅整数型を使う。 - 真偽は
bool。0/1のintで代用せず、意図を型で表す。
| よくある落とし穴 |
|---|
|
auto と固定幅整数(<cstdint>)
C++11以降では、初期化子から型を推論させる auto が使える。型名を書く手間を省けるが、何型に推論されるかを意識しておくことは大切(例: auto x = 5; は int、auto y = 5.0; は double)。
また、環境によらずビット幅を固定したい場合は <cstdint> をインクルードして固定幅整数型を使う。代表的なものに、ちょうど指定ビットの int8_t / int16_t / int32_t / int64_t(および符号なしの uint*_t)がある。
|
#include <cstdint> int32_t v32 = 100000; // 必ず32ビット符号あり uint8_t b = 255; // 0~255 の符号なし8ビット auto n = 42; // 推論で int になる |
よくある質問
Q. int はいつも4バイト(32ビット)と考えてよいですか?
A. 多くの環境では4バイトですが、それは保証ではありません。規格は int に最低16ビットしか求めておらず、サイズは処理系依存です。確実に幅を固定したいなら <cstdint> の int32_t を使い、現環境の値を知りたいなら sizeof(int) で確認してください。
Q. 小数を使うとき float と double のどちらを選べばよいですか?
A. 迷ったら double です。有効桁が15~16桁あり精度に余裕があるうえ、C++のリテラル(例: 3.14)も既定で double 型です。メモリや速度がよほど重要で、6~7桁の精度で足りると分かっている場合だけ float を検討します。
Q. 文字列を扱う型はこの中にありますか?
A. 本記事の文字型(char / wchar_t)はあくまで1文字単位です。複数文字をまとめた文字列は std::string という別の型で扱い、これは別記事の領分です。
まとめ
C++の基本データ型は、整数(int 系)・浮動小数点(double 系)・文字(char 系)・論理(bool)の4系統に整理できる。サイズや範囲は環境依存であることを前提に、整数は int、小数は double を既定とし、幅を固定したい場面では <cstdint> の固定幅整数を使う。オーバーフローや符号なしの挙動、浮動小数点の誤差といった落とし穴を押さえれば、用途に合った型選びができる。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
コメントを削除してもよろしいでしょうか?