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

C語言邏輯非運算符 ! 完整用法指南:取反、條件判斷、指針檢查

     編輯:C 語言問答

核心規則

  • !expr:expr 為 0 (假) → 結果 1 (真);expr 非 0 → 結果 0。
  • **類型**:結果為 int (C 標準),值僅 0 或 1。
  • **優先級**:高於算術/關係/邏輯二元運算符,低於後綴 ++/--、()、[]、->、.。

經典用法場景

場景代碼等價寫法
檢查指針是否為 NULLif (!p) error();if (p == NULL)
檢查字串是否為空if (!*s) return;if (*s == '\0')
切換布爾標誌flag = !flag;flag = 1 - flag;
判斷奇偶 (位運算配合)if (!(n & 1))if ((n & 1) == 0)
簡化複雜條件if (!(a > 0 && b < 10))德摩根律:if (a <= 0 || b >= 10)

優先級陷阱實例


!a + b      // 解析為 (!a) + b,非 !(a+b)
!a > b      // (!a) > b,即 (0或1) > b
!*p++       // !(*(p++)),先取值後遞增指標

**建議**:複雜表達式**加括號**明確意圖:!(a + b)、(!a) > b。

與按位非 ~`

運算符名稱作用示例
!邏輯非真假取反,結果 0/1!5 == 0
~按位非每位取反,結果同類型~5 == -6 (補碼)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved