if(a > b)
{printf("%d is greater than %d", a, b);}
else if( a < b )
{printf("%d is greater than %d", b, a);}
else
{printf("%d is equal to %d", a, b);}
如何将if语句转换为C中的switch-case?我正在尝试,但我不知道这个问题的答案
switch
语句用于根据一组有限的可能值测试输入表达式。
你试图比较两个变量。这不是switch
的用例。
你的if
/ else if
连锁店很好。
switch ((a < b) - (a > b)) {
case -1:
printf("%d is greater than %d", a, b);
break;
case 1:
printf("%d is greater than %d", b, a);
break;
default:
printf("%d is equal to %d", a, b);
}
玩笑 :
switch ((a > b) ? 1 : ((a == b) ? 0 : -1)) {
case 1:
printf("%d is greater than %d", a, b);
break;
case 0:
printf("%d is equal to %d", a, b);
break;
default:
printf("%d is greater than %d", b, a);
}
你在这里进行三方比较是磕磕绊绊的。
您可以分别使用-1,0和+1作为switch ((a < b) - (a > b)) {
,a < b
和a == b
的案例标签来编写a > b
。请注意,您需要括号,因为二进制-
的优先级高于<
或>
。
在C ++中,表达式已经封装在三向比较运算符<=>
中,您可以简单地编写
switch (a <=> b){
与之前的案例标签一样。据我所知,没有建议将该运营商纳入C.