在此題中,50是分界線,也就是說,我們要把所有的數字分成0~50跟51~無限大兩個區域,且兩個區域帶進這運算只會得到兩種答案
如果體重是n (n-50.5)可以讓兩個區域分成正跟負 全正數要再轉成一樣的 而全負數要轉成一樣的
a/|a|這個東西可以讓正的輸出1 負的輸出-1
接下來就經過簡單的運算 可以讓1變成-1 -1變成0
自己思考一下~
諸如"x > 10"、"y <= 12"這樣的判斷式,實際上是一個布林值,也就是true、false二擇一,又個別可以被轉換成1、0
因此,可以利用布林值true轉成1、false轉成0的特性,來達到不用if的解題
如: | z = (x>123)*123 + (x<=123)*x | ,此時如果 x>123,z=123,否則z=x
這種,以及其他消去程式中的if的技巧,叫做"Branchless Programming",可能會讓程式有極微小的提速(但也可能更慢),平時不會使用(差距微小,debug起來也更難)