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

C++ 花括號位置改變 if-else 匹配導致邏輯差異

     編輯:程式設計綜合問答

現象

兩段代碼僅花括號位置不同,輸出結果截然不同。

代碼對比

// 版本 1:內層 if 無大括號,外層 if 包含換行語句
if (i % 3 != 0) {
  if (j % 10 == 0) cout << endl; // 屬於外層 if
}

// 版本 2:內層 if 有大括號,外層 if 僅包含空語句或單獨語句
if (i % 3 != 0)
  if (j % 10 == 0) cout << endl; // 仍屬於外層 if,但縮進誤導
// 實際第二張圖顯示:外層 if 無大括號,內層 if 有大括號,導致換行執行兩次

規則

  • C/C++ 中 if 後不加大括號時,僅緊隨其後的一條語句受其控制。
  • else 總是與最近的未匹配 `if` 配對(悬空 else 問題)。

最佳實踐

永遠使用大括號,即使只有一條語句:

if (condition) {
  statement;
}

避免因縮進誤導、維護時增刪行導致邏輯錯誤。現代編碼規範(Google C++、C++ Core Guidelines)均強制要求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved