如何在c中转换if切换案例

问题描述 投票:2回答:4
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?我正在尝试,但我不知道这个问题的答案

c switch-statement
4个回答
7
投票

switch语句用于根据一组有限的可能值测试输入表达式。

你试图比较两个变量。这不是switch的用例。

你的if / else if连锁店很好。


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
投票

玩笑 :

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
投票

你在这里进行三方比较是磕磕绊绊的。

您可以分别使用-1,0和+1作为switch ((a < b) - (a > b)) {a < ba == b的案例标签来编写a > b。请注意,您需要括号,因为二进制-的优先级高于<>

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

switch (a <=> b){

与之前的案例标签一样。据我所知,没有建议将该运营商纳入C.

© www.soinside.com 2019 - 2024. All rights reserved.