int a = -1, b = 4;
if ((++a < 0) && !(b-- <= 0))
printf("True");
else
printf("False");
printf("a=%d, b=%d", a, b); // 輸出 a=0, b=4
++a:a 從 -1 變為 0。(++a < 0) → (0 < 0) → false。&& 為短路運算子:左運算元為 false 時,右運算元完全不會執行。!(b-- <= 0) 不求值,b-- 不執行,b 維持 4。else 列印 "False"。&& 左假則右不算;|| 左真則右不算。++、--、函式呼叫)。++a 先增後用;b-- 先用後減(但此處根本不執行)。在 IDE 斷點觀察 a、b 變化,或改寫為獨立語句:
bool left = (++a < 0);
bool right = !(b-- <= 0); // 只有 left 為 true 時才會執行
if (left && right) ...
條件 (++a < 0) 為假,導致邏輯與短路,b-- 不執行,故 b 保持初值 4。