What is the exact difference between “switch” and nested “if”?
我不明白为什么在检查条件时需要使用switch语句而不是嵌套的if语句有任何速度
开关语句易于阅读,这对于维护很重要。另外,编译器可能可以用switch语句进行更好的优化,尽管编译器现在已经非常好了,所以可能不会。
从另一个角度看,在switch/case不能使用的情况下,可以使用多个if语句(嵌套或只是级联else-if)。比较字符串。
正如约翰所说,开关有特定的用途。它的功能是有限的,但是在这些限制范围内,它通常更容易理解,并且不太容易出现程序员错误,因为程序员仅限于交换机的功能。因此,当开关能够满足要求时,它通常是首选的。请注意,开关仅限于要比较的项目。
机器效率不太可能是一个考虑因素,但开发人员的效率可能是重要的。在开发由他人维护的软件时,软件所有者可能需要使用有助于提高开发人员整体效率的约定。
如果仔细查看
在退出代码块之前,总是要检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | switch(n) { case 0: printf("You typed zero. "); break; case 1: case 9: printf("n is a perfect square "); break; case 2: printf("n is an even number "); break; case 3: case 5: case 7: printf("n is a prime number "); break; case 4: printf("n is a perfect square "); case 6: case 8: printf("n is an even number "); break; default: printf("Only single-digit numbers are allowed "); break; } |
上面的代码说明,对于参数"n",如果n为0,则块将打印"You typed zero"(然后停止),如果n为1或9(然后停止),则块将打印"n是一个完美的正方形",依此类推。这与它的
通过在每个