[讨论] 为何不支援三一律?

楼主: czm (czm)   2018-09-25 05:46:12
常常有两个数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 (神崎・H・アリア)   2018-09-25 07:39:00
c++20 Three-way comparison
作者: LPH66 (-6.2598534e+18f)   2018-09-25 08:07:00
不过我看了一下 proposal, 未来的 <=> 不会有三分支语意
作者: tinlans ( )   2018-09-28 08:14:00
因为 C++ 是在 CPU 很弱的时代就出现的语言。不过就算语言本身不支援,编译器还是可以设法帮你合出来
作者: Killercat (杀人猫™)   2018-09-28 20:18:00
真不行就学MS套Macro跑compiler internal XD
作者: Schottky (顺风相送)   2018-09-29 19:30:00
我比较想要支援进位 flag
作者: yvb   2018-10-02 20:44:00
不同意 3F. wiki Three-way_comparison => arithmetic IF同意 4F 编译器可以. 试过 gcc -O2 会得到原PO期望的组语样态

Links booklink

Contact Us: admin [ a t ] ucptt.com