123, -4560173 (前綴 0)0x7B (前綴 0x/0X)L/l (long), U/u (unsigned), 如 123UL3.14, .5, 100.1.23e4 (=12300), 5E-2 (=0.05)double,後綴 F/f 指定 float,L/l 指定 long double。'a', '\n', '\\', '\0' (佔 1 字節,存 ASCII 值)。\n 換行, \t 制表, \ddd 八進制, \xhh 十六進制。"Hello",內存以 \0 結尾,佔長度+1 字節。"" 空串佔 1 字節 (\0);"A" 佔 2 字節,'A' 佔 1 字節。#define PI 3.14159 (預處理替換,不佔內存,無類型檢查)。const double PI = 3.14159; (有類型、有作用域、佔內存、可調試)。**強烈推薦用 const 替代宏**。
int a; // 未初始化,值不確定 (靜態存儲期除外)
int b = 10; // 複制初始化
int c(20); // 直接初始化 (C++ 風格)
int d{30}; // 列表初始化 (C++11,防窄化轉換)
const int e = 5; // 必須初始化,後不可修改
命名規則:字母/下劃線開頭,區分大小寫,避開關鍵字。
| 優先級 | 運算符 | 說明 | 結合性 |
|---|---|---|---|
| 1 (最高) | :: | 作用域解析 | 左→右 |
| 2 | ++ -- + - ! ~ (type) * & sizeof | 一元運算符 | 右→左 |
| 3 | * / % | 乘除模 | 左→右 |
| 4 | + - | 加減 | 左→右 |
| 5 | << >> | 移位 | 左→右 |
| 6 | < <= > >= | 關係 | 左→右 |
| 7 | == != | 相等 | 左→右 |
| 8 | & | 位與 | 左→右 |
| 9 | ^ | 位異或 | 左→右 |
| 10 | | | 位或 | 左→右 |
| 11 | && | 邏輯與 | 左→右 |
| 12 | || | 邏輯或 | 左→右 |
| 13 | ?: | 條件 | 右→左 |
| 14 | = += -= *= ... | 賦值 | 右→左 |
| 15 (最低) | , | 逗號運算符 | 左→右 |
5 / 2 = 2 // 截斷向零
-5 / 2 = -2 // C++11 規定向零截斷
5 % 2 = 1
-5 % 2 = -1 // 被除數符號決定結果符號
5 % -2 = 1
-5 % -2 = -1
公式:(a/b)*b + a%b == a 恆成立。
constexpr (C++11 編譯期常量) 或 const,拒絕 #define。static_cast<double>(a)/b 避免整數除法意外。