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

C 語言順序表求交集時 if(j=k) 賦值導致邏輯錯誤分析

     編輯:程式設計綜合問答

錯誤代碼

if (j = k)  // 本意是 j == k
    // 删除元素逻辑

原因

= 為賦值運算符,將 k 賦給 j,表達式值為 k(非零即真),導致 if 條件恒成立,錯誤刪除元素。
== 才是比較運算符。

防範技巧

  • 習慣寫成 if (k == j)(常量在左),誤寫成 = 會編譯報錯「左值必須為變量」。
  • 開啟編譯器警告 -Wall -Wextra(GCC/Clang)或 /W4(MSVC),會提示「建議使用 ==」。
  • Code Review / 靜態分析工具(Cppcheck, SonarQube)自動檢測。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved