C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 嵌套if语句和“\u0026\u0026”运算符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
if(a() && b() && c() && d())
   doSomething();


if(a())
   if(b()) 
      if(c())
         if(d())
            doSomething();

这两者之间是否存在“任何”性能差异?

例如,在a()变为0的情况下,它是否会在第一个if语句中继续运行b(),c()和d()?或者它会与第二个嵌套的if语句一样工作吗?

解决方法

它们完全相同.

要自己测试一下,运行gcc -S test.c(假设这是你放置源代码的地方)并观察test.s.内容.

以下是嵌套if方法如何使用认选项(带注释注释)在gcc 4.8.1中编译:

@H_194_2@main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6,-16 movq %rsp,%rbp .cfi_def_cfa_register 6 movl $0,%eax call A # try to call A testl %eax,%eax # look at its return value je .L3 # short-circuit if it returned 0 movl $0,%eax # ...repeat for B,et al. call B testl %eax,%eax je .L3 movl $0,%eax call C testl %eax,%eax call D testl %eax,%eax call doSomething .L3: popq %rbp .cfi_def_cfa 7,8 ret .cfi_endproc

这是和&&方法编译:

@H_194_2@main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6,%eax call A # try to call A testl %eax,%eax # look at its return value je .L3 # short-circuit if it returned 0 movl $0,%eax # ...repeat for B,8 ret .cfi_endproc

大佬总结

以上是大佬教程为你收集整理的c – 嵌套if语句和“\u0026\u0026”运算符全部内容,希望文章能够帮你解决c – 嵌套if语句和“\u0026\u0026”运算符所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。