Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C “之间的确切区别是什么?”;开关";和嵌套的;如果“是”的话;?_C - Fatal编程技术网

C “之间的确切区别是什么?”;开关";和嵌套的;如果“是”的话;?

C “之间的确切区别是什么?”;开关";和嵌套的;如果“是”的话;?,c,C,我不明白为什么我们需要使用switch语句而不是嵌套语句,如果在检查条件时有任何速度则switch语句更易于阅读,这对于维护很重要。 此外,编译器可能能够通过switch语句进行更好的优化,尽管编译器现在已经变得相当不错了,所以可能不行 从另一个角度看,在switch/case不能使用的情况下,可以使用多个if语句(嵌套或只是级联else-if)。比较字符串 如果您仔细查看开关控制流后面的文档,您将看到您正在打开的每个案例都以一个中断结束。这意味着当满足开关情况的条件时,代码块停止执行 如果在退

我不明白为什么我们需要使用switch语句而不是嵌套语句,如果在检查条件时有任何速度

则switch语句更易于阅读,这对于维护很重要。 此外,编译器可能能够通过switch语句进行更好的优化,尽管编译器现在已经变得相当不错了,所以可能不行


从另一个角度看,在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
是一种避免应用默认值的技巧。