(1.5 == (1.0 || 1.5) ? 1 : 2)
|| 的返回類型在 C/C++ 中,|| 的操作數會隱式轉換為 bool,結果類型為 bool(true/false,數值上為 1/0)。
1.0 非零 → true (1)。1.5 非零 → true (1)。1.0 || 1.5 短路求值:左操作數為真,**直接返回 true (1)**,不再求值右側。1.5 == true。true 參與數值比較提升為 1。1.5 == 1 為假(0)。2。#include
int main() {
std::cout << (1.0 || 1.5) << std::endl; // 輸出 1 (true)
std::cout << (1.5 == (1.0 || 1.5)) << std::endl; // 輸出 0 (false)
std::cout << (1.5 == (1.0 || 1.5) ? 1 : 2) << std::endl; // 輸出 2
}
不要將浮點數直接與邏輯運算結果比較。若意圖判斷 1.5 是否等於 1.0 或 1.5,應寫為 (1.5 == 1.0 || 1.5 == 1.5)。