Вы наткнулись на трехстороннее сравнение здесь.
Вы можете написать switch ((a < b) - (a > b)) {
с -1, 0 и +1 в качестве меток регистра для a < b
, a == b
и a > b
соответственно. Обратите внимание, что вам нужны скобки, так как двоичный файл -
имеет более высокий приоритет, чем <
или >
.
В C ++ это выражение было инкапсулировано в трехсторонний оператор сравнения <=>
, и вы можете написать просто
switch (a <=> b){
с ярлыками на корпусах, как и раньше. Насколько я знаю, нет предложения включить этот оператор в C.