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

C語言運算符全解析:算術、邏輯、位運算與類型轉換規則

     編輯:關於C語言

一、算術運算符

  • + - * / %:除 % 僅限整數外,其餘支援整數與浮點數。
  • 整數除法 / 截斷小數部分;負數參與 /、% 結果由編譯器定義(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。
    有符號數右移:邏輯移位(補 0)或算術移位(複製符號位),由編譯器決定 → 不可移植。無符號數保證邏輯移位。
  • 取模優化:除數為 2^n 時,x % 2^n == x & (2^n-1),效率更高。
  • 字節序轉換:((x>>24)&0xFF) | ((x>>8)&0xFF00) | ((x<<8)&0xFF0000) | (x<<24) 實現 32 位大小端轉換。

四、常量後綴與類型

類型後綴
int無
unsigned intu/U
longl/L
unsigned longul/UL
long longll
unsigned long longull/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。

六、擴展與截斷

  • 零擴展:無符號數擴大類型,高位補 0。
  • 符號擴展:有符號數擴大類型,高位複製符號位。
    例:short -12345 (0xCFC7) → int 0xFFFFCFC7,unsigned short 同位模式為 53191。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved