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中的切换用例? 我正在尝试,但是我不知道该问题的答案
答案 0 :(得分:7)
switch
语句用于针对一组有限的可能值测试输入表达式。
您正在尝试比较两个变量。这不是switch
的用例。
您的if
/ else if
链很好。
答案 1 :(得分:5)
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);
}
答案 2 :(得分:2)
玩笑:
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);
}
答案 3 :(得分:1)
您正在这里进行三种方式的比较。
您可以分别用-1、0和+1编写switch ((a < b) - (a > b)) {
,分别作为a < b
,a == b
和a > b
的大小写标签。请注意,您需要使用括号,因为二进制-
的优先级高于<
或>
。
在C ++中,表达式已封装在三种比较运算符 <=>
中,您可以编写
switch (a <=> b){
与前面的案例标签相同。据我所知,没有提议将该运算符包含在C中。