sizeof 運算符
- 單目運算符,返回類型/變量佔用字節數(編譯期常量)。
- `sizeof(int)=2/4`,`sizeof(double)=8`,`sizeof(float)=4`。
- 可用於變量:`float f; int i=sizeof(f);` → i=4。
復合賦值運算符
形式:`var op= expr` 等價 `var = var op (expr)`。適用所有二元算術/位運算符。
例:`a+=b` ≡ `a=a+b`,`a/=b-c` ≡ `a=a/(b-c)`,`a&=b` ≡ `a=a&b`。
完整優先級表(高→低)
- `()` `[]` `->` `.`
- `!` `~` `-` `++` `--` `&`(取址) `*`(解引用) `sizeof` `(type)`
- `*` `/` `%`
- `+` `-`
- `<<` `>>`
- `<` `<=` `>` `>=`
- `==` `!=`
- `&`(位與)
- `^`(位異或)
- `|`(位或)
- `&&`(邏輯與)
- `||`(邏輯或)
- `?:`(三元)
- `=` `+=` `-=` `*=` `/=` `%=` `&=` `^=` `|=` `<<=` `>>=`
- `,`(逗號)
結合性
- 多數左結合(`a+b+c` ≡ `(a+b)+c`)。
- 單目、三元、賦值、逗號為右結合(`a=b=c` ≡ `a=(b=c)`)。
驗證示例
`10>4 && !(100<99) || 3<=5` → `1 && !0 || 1` → `1 && 1 || 1` → `1 || 1` → `1`。
`10>4 && !(100<99) && 3<=5` → `1 && 1 && 1` → `1`(原文示例有誤,實際為 1)。
總結
熟記優先級與結合性是寫出無 Bug 表達式的前提,複雜表達式**多加括號**是工程佳作風。