【发布时间】:2016-10-27 03:36:59
【问题描述】:
假设我们有以下代码:
switch (currentChar) {
case 'G':
case 'T':
case 'M':
case ';':
case '\r':
case '\n':
doSomething();
break;
}
如果满足第一个条件(currentChar == 'G')是否还比较以下情况,或者程序直接跳转到doSomething()?
什么会更快执行:switch-case 或带有|| 运算符的 if?
说明:
如果满足任何条件,我希望执行doSomething。我也知道 99% 的情况都会出现“G”情况。如果我把它放在列表的顶部,我可以假设它会作为第一个进行比较吗?
【问题讨论】:
-
以下语句也会被评估,直到它们遇到
break;语句或脱离 switch 语句。 -
不清楚你在问什么。 case 是常量表达式,是否对这些常量表达式求值并没有什么区别。您是否在询问
currentChar是否与这些案例值进行比较?你是在问doSomething()是否被评估?还是你在问别的? -
您可以测试每种方式并找出自己。一般来说,哪种方式更快问题过于宽泛,因为它们可能取决于许多不同的因素。
-
@hvd 我在问
currentChar是否与这些案例值进行比较。 -
@mactro 好的。所以你知道
doSomething()将被调用,并且你想知道,当currentChar == 'G'、currentChar == 'T'、currentChar == 'M'、currentChar == ';'等被毫无意义地评估只是为了忽略它们的结果。那正确吗?在这种情况下,你得到的第一个答案(@πάνταῥεῖ's)可能涵盖了它。
标签: c++ if-statement switch-statement conditional