如何在C中转换为大小写转换

时间:2019-03-22 11:31:33

标签: c switch-statement

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中的切换用例? 我正在尝试,但是我不知道该问题的答案

4 个答案:

答案 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 < ba == ba > b的大小写标签。请注意,您需要使用括号,因为二进制-的优先级高于<>

在C ++中,表达式已封装在三种比较运算符 <=>中,您可以编写

switch (a <=> b){

与前面的案例标签相同。据我所知,没有提议将该运算符包含在C中。