看板 C_and_CPP 關於我們 聯絡資訊
常常有兩個數a,b 需要判斷 a>b 或 a=b 或 a<b 於是就要寫成 if( a>b) { ;;; } else if( a==b) { ;;; } else { ;;; } // 需要比較兩次 與 一些jmp 可是應該很多cpu都有支援 類似如下intel 的指令 cmp a,b jg xxx je yyy jl zzz ;只要比較一次 就可由旗號得知三一律的結果 直接走該走的分支 為何c++ 不實做三一律? 例如這樣 (a??b) ?> do_something ?= do_something ?< do_something ; ※ 編輯: czm (1.163.137.249), 09/25/2018 06:01:11
KanzakiHAria: c++20 Three-way comparison 09/25 07:39
LPH66: 不過我看了一下 proposal, 未來的 <=> 不會有三分支語意 09/25 08:07
tinlans: 因為 C++ 是在 CPU 很弱的時代就出現的語言。 09/28 08:14
tinlans: 不過就算語言本身不支援,編譯器還是可以設法幫你合出來 09/28 08:14
Killercat: 真不行就學MS套Macro跑compiler internal XD 09/28 20:18
Schottky: 我比較想要支援進位 flag 09/29 19:30
yvb: 不同意 3F. wiki Three-way_comparison => arithmetic IF 10/02 20:44
yvb: 同意 4F 編譯器可以. 試過 gcc -O2 會得到原PO期望的組語樣態 10/02 20:48