Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
嵌套的if或switch case语句_C_Case_Nested If - Fatal编程技术网

嵌套的if或switch case语句

嵌套的if或switch case语句,c,case,nested-if,C,Case,Nested If,从优化代码运行时的角度来看,在何处使用“嵌套if”语句以及何时使用“switch case”语句是否有一个经验法则?我怀疑您是否会发现一个真实的应用程序,其中嵌套if和switch case之间的差异甚至值得衡量。磁盘访问、web访问等需要更多数量级的时间 选择最容易阅读和调试的内容 另请参见(可能重复)以及。有趣的是,switch的支持者写道 在最坏的情况下,编译器将 生成与if-else相同的代码 锁链,这样你就不会失去任何东西。如果 怀疑最常见的情况 首先进入switch语句 在最好的情况

从优化代码运行时的角度来看,在何处使用“嵌套if”语句以及何时使用“switch case”语句是否有一个经验法则?

我怀疑您是否会发现一个真实的应用程序,其中嵌套if和switch case之间的差异甚至值得衡量。磁盘访问、web访问等需要更多数量级的时间

选择最容易阅读和调试的内容

另请参见(可能重复)以及。有趣的是,switch的支持者写道

在最坏的情况下,编译器将 生成与if-else相同的代码 锁链,这样你就不会失去任何东西。如果 怀疑最常见的情况 首先进入switch语句

在最好的情况下,优化器可以 找到更好的方法来生成 代码。编译器通常做的事情是 建立二叉决策树 (在中保存比较和跳转。) 或者简单地构建一个 跳转表(在没有比较的情况下工作) 全部)


我怀疑您是否会找到一个真实的应用程序,其中嵌套if和开关外壳之间的差异甚至值得测量。磁盘访问、web访问等需要更多数量级的时间

选择最容易阅读和调试的内容

另请参见(可能重复)以及。有趣的是,switch的支持者写道

在最坏的情况下,编译器将 生成与if-else相同的代码 锁链,这样你就不会失去任何东西。如果 怀疑最常见的情况 首先进入switch语句

在最好的情况下,优化器可以 找到更好的方法来生成 代码。编译器通常做的事情是 建立二叉决策树 (在中保存比较和跳转。) 或者简单地构建一个 跳转表(在没有比较的情况下工作) 全部)


如果您有2-3个以上的比较 然后是“开关” 否则“如果”


在切换策略之前,尝试应用一些模式…

如果您有2-3个以上的比较 然后是“开关” 否则“如果”


在使用类似策略的切换之前,尝试应用一些模式…

我不认为这会对可以使用任何一种方法实现的决策结构产生任何影响。您的编译器很可能会在可执行文件中生成相同的指令。

我不认为这会对可以使用任何一种方法实现的决策结构产生任何影响。编译器很可能会在可执行文件中生成相同的指令。

开关通常是if/elseif/elseif类型模式的替代品,而不是嵌套的if-这就是您的意思吗?正如tofutim所说,可能是重复的,请选择最容易阅读的,因为没有优化差异。太多的嵌套语句只会让阅读变得混乱。Switch通常是if/elseif/elseif类型模式的替代品,而不是嵌套的if-这是您的意思吗?正如tofutim所说,可能重复,请选择最容易阅读的,因为没有优化差异。太多的嵌套语句只会让读取变得混乱。编译器可以像对待开关一样对待if/else链,只要程序的语义允许。无法确定编译器是否足够聪明,不会引起人们对天网的担忧。如果你必须小心,那么a)测量和b)检查你所关心的特定编译器的输出。一般的答案是tofutim siad:“选择最容易阅读和调试的内容”。编译器可以像对待开关一样对待if/else链,只要程序的语义允许。无法确定编译器是否足够聪明,不会引起人们对天网的担忧。如果你必须小心,那么a)测量和b)检查你所关心的特定编译器的输出。一般的答案是tofutim siad所说的:“选择最容易阅读和调试的内容。”。