+ - * / %:除 % 僅限整數外,其餘支援整數與浮點數。/ 截斷小數部分;負數參與 /、% 結果由編譯器定義(C99 規定向零截斷,餘數符號同被除數)。100/10=10,100/11=9;100%10=0,100%11=1。&& || !:短路求值,左到右,結果確定即停止。!(邏輯非)與 ~(按位取反)。& | ^ ~ << >>value &= ~(1<<n) 清零第 n 位;value |= 1<<n 置 1。<<n 等價 *2^n(無溢出);右移 >>n 等價 /2^n。2^n 時,x % 2^n == x & (2^n-1),效率更高。((x>>24)&0xFF) | ((x>>8)&0xFF00) | ((x<<8)&0xFF0000) | (x<<24) 實現 32 位大小端轉換。| 類型 | 後綴 |
|---|---|
| int | 無 |
| unsigned int | u/U |
| long | l/L |
| unsigned long | ul/UL |
| long long | ll |
| unsigned long long | ull/ULL |
32 位機測試:sizeof(0)=4,sizeof(0LL)=8。寫正確後綴可避免隱式轉換陷阱。
char/short 參與運算先提升為 int(或 unsigned int)。unsigned short x=0; ~x 提升為 int 後取反得 -1,導致 ~x > (unsigned short)0 為假。long double > double > float > unsigned long > long > unsigned int > int。short -12345 (0xCFC7) → int 0xFFFFCFC7,unsigned short 同位模式為 53191。