首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 資料型別完整指南:基本型別、修飾詞、typedef、枚舉與 sizeof 實戰

     編輯:C++ 入門

C++ 資料型別完整指南:基本型別、修飾詞、typedef、枚舉與 sizeof 實戰

變數宣告時需指定資料型別,作業系統據此配置記憶體空間並決定位元解讀方式。C++ 提供七大基本型別與豐富的衍生型別機制。

七大基本型別

分類關鍵字典型大小範圍/精度
布林bool1 bytetrue/false
字元char1 byte-128~127 或 0~255
整數int4 bytes-2,147,483,648 ~ 2,147,483,647
單精度float4 bytes±3.4e±38 (~7 位有效數字)
雙精度double8 bytes±1.7e±308 (~15 位有效數字)
無型別voidN/A不完整型別
寬字元wchar_t2/4 bytes1 寬字元

型別修飾詞組合

signed/unsigned/short/long 修飾基本整數型別:

型別大小範圍
signed char1 byte-128 ~ 127
unsigned char1 byte0 ~ 255
short int2 bytes-32,768 ~ 32,767
unsigned short2 bytes0 ~ 65,535
long int4/8 bytes平台相關
unsigned long4/8 bytes0 ~ 2³²-1 或 2⁶⁴-1

實作定義:確切大小/範圍依編譯器/平台,必須用 sizeof 確認。

sizeof 運算子實戰


#include 
using namespace std;

int main() {
    cout << "char: "       << sizeof(char) << endl;
    cout << "int: "        << sizeof(int) << endl;
    cout << "short: "      << sizeof(short) << endl;
    cout << "long: "       << sizeof(long) << endl;
    cout << "float: "      << sizeof(float) << endl;
    cout << "double: "     << sizeof(double) << endl;
    cout << "wchar_t: "    << sizeof(wchar_t) << endl;
    return 0;
}

輸出範例 (64-bit Linux):

char: 1
int: 4
short: 2
long: 8
float: 4
double: 8
wchar_t: 4

typedef 型別別名

為既有型別建立新名稱,提升可讀性與可攜性:


typedef int Feet;          // Feet 成為 int 別名
Feet distance = 100;       // 合法

typedef long long int64;   // 固定寬度別名 (C++11 建議用 )
typedef void (*FuncPtr)(int); // 函數指標別名

現代 C++ 偏好 using:using Feet = int;、using FuncPtr = void(*)(int);,支援模板別名。

枚舉型別

使用者定義的離散值集合,增強型別安全與可讀性。

傳統枚舉 (非作用域)


enum Color { RED, GREEN, BLUE };
Color c = RED;           // 隱性轉換為 int (0)
int i = GREEN;           // 合法但不安全
  • 枚舉項預設從 0 起始遞增,可指定值:enum { A=10, B=20, C }; → C=21。
  • 無型別安全,污染外層作用域。

強型別枚舉 enum class (C++11)


enum class Color { RED, GREEN, BLUE };
Color c = Color::RED;    // 作用域限定
// int i = Color::RED;  // 錯誤:不可隱性轉換
int i = static_cast(Color::RED); // 顯式轉換
  • 指定底層型別:enum class Flag : uint8_t { A=1, B=2 };
  • 支援位元運算:Flag f = Flag::A | Flag::B; (需多載運算子)

型別選擇決策表

需求建議型別
開關狀態bool
ASCII 字元char
Unicode 代碼點char32_t (C++11) / wchar_t
一般整數計數int
大整數/位元掩碼uint32_t/uint64_t
一般浮點運算double
記憶體/頻寬受限float/half
固定選項集合enum class
型別別名/可攜性using + <cstdint>

總結

  • 基本型別大小/範圍實作定義,生產碼務必用 sizeof 與 <climits>/<cfloat> 驗證。
  • 棄用傳統 enum,全面採用 enum class 獲得型別安全與作用域隔離。
  • 型別別名用 using 取代 typedef,支援模板別名。
  • 跨平台專案引入 <cstdint> 固定寬度型別,消除平台差異。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved