大佬教程收集整理的这篇文章主要介绍了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,请注明来意。