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

C# if 後多一個分號導致邏輯錯誤:水仙花數範例

     編輯:程式設計綜合問答

錯誤代碼

if ((a*a*a + b*b*b + c*c*c) == i) ;  // ← 這裡多了一個分號
{
    Console.WriteLine(i);
}

現象

本應輸出 100-999 間的水仙花數(153, 370, 371, 407),實際輸出 701-999 全部數字。

原因

C# 中 if (condition) ; 是一條空語句。分號結束了 if,後面的大括號變成獨立的程式區塊無條件執行。等價於:

if (condition) { /* 空 */ }
{ Console.WriteLine(i); } // 永遠執行

正確寫法

if ((a*a*a + b*b*b + c*c*c) == i)  // 無分號
{
    Console.WriteLine(i);
}

避免技巧

  • 養成「if 後不加分號」肌肉記憶。
  • 啟用編輯器「顯示分號」或靜態分析工具(ReSharper、Roslyn Analyzer)會警告「Empty statement」。
  • 單行語句也建議加大括號:if (cond) { Do(); }。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved