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 後不加分號」肌肉記憶。if (cond) { Do(); }。