C “之间的确切区别是什么?”;开关";和嵌套的;如果“是”的话;?
我不明白为什么我们需要使用switch语句而不是嵌套语句,如果在检查条件时有任何速度则switch语句更易于阅读,这对于维护很重要。 此外,编译器可能能够通过switch语句进行更好的优化,尽管编译器现在已经变得相当不错了,所以可能不行C “之间的确切区别是什么?”;开关";和嵌套的;如果“是”的话;?,c,C,我不明白为什么我们需要使用switch语句而不是嵌套语句,如果在检查条件时有任何速度则switch语句更易于阅读,这对于维护很重要。 此外,编译器可能能够通过switch语句进行更好的优化,尽管编译器现在已经变得相当不错了,所以可能不行 从另一个角度看,在switch/case不能使用的情况下,可以使用多个if语句(嵌套或只是级联else-if)。比较字符串 如果您仔细查看开关控制流后面的文档,您将看到您正在打开的每个案例都以一个中断结束。这意味着当满足开关情况的条件时,代码块停止执行 如果在退
从另一个角度看,在switch/case不能使用的情况下,可以使用多个if语句(嵌套或只是级联else-if)。比较字符串 如果您仔细查看
开关
控制流后面的文档,您将看到您正在打开的每个案例都以一个中断
结束。这意味着当满足开关情况的条件时,代码块停止执行
如果在退出代码块之前总是检查语句,那么是的,速度是其背后的一个重要原因。我上面提到的任何东西都不是C语言或任何语言所特有的
switch(n) {
case 0:
printf("You typed zero.\n");
break;
case 1:
case 9:
printf("n is a perfect square\n");
break;
case 2:
printf("n is an even number\n");
break;
case 3:
case 5:
case 7:
printf("n is a prime number\n");
break;
case 4:
printf("n is a perfect square\n");
case 6:
case 8:
printf("n is an even number\n");
break;
default:
printf("Only single-digit numbers are allowed\n");
break;
}
上面的代码说明,对于参数“n”,如果n为0(然后停止),块将打印“youtypedzero”;如果n为1或9(然后停止),块将打印“n是一个完美的正方形”,依此类推。这与它的if
控制流对应项不同,因为在if
的情况下,将在退出代码块之前针对每个条件检查参数
通过在每个if
语句后插入一个“break”,可以使用if
语句实现类似的功能<代码>开关
当您希望将参数与单个条件匹配然后退出时,通常会使用控制流,而不是根据每个条件检查参数。正如John所说,开关有特定的用途。它的功能有限,但在这些限制范围内,它通常更容易理解,并且不太容易发生程序员错误,因为程序员仅限于交换机的功能。因此,当开关能够满足要求时,通常首选开关。请注意,开关仅限于要比较的一个项目
机器效率不太可能是一个考虑因素,但开发人员的效率可能是重要的。在开发由他人维护的软件时,软件所有者可能会要求使用有助于提高开发人员整体效率的约定。您在谷歌上尝试过什么搜索?当我们必须检查两个条件时,使用if语句,例如,如果满足与if相关联的条件,而不是执行与之相关联的语句。switch:-switch是一个多条件控制语句。在这里,我们检查不同的条件。如果满足case,我们使用不同的case。执行与该case相关的语句。其他一些重复的可能重复:它是
break
,而不是break
。如果我还不理解If
和switch
语句,您的答案不会告诉我哪一个应该更快。break
不适用于所有switch
情况。这是一个黑客
。开关
旨在允许在应用默认
案例之前更改控制。默认值
是每个案例的一部分。案例中的break
是一种避免应用默认值的技巧。