嵌套的if (条件)和逻辑运算符在性能和逻辑方面有什么不同。
if(a && b && c){
//do something
}
if(a){
if(b){
if(c){
//do something
}
}
}上述代码在逻辑上是相同的吗?我主要关心的是代码的性能,性能明智地使用哪一个是最好的?
发布于 2019-04-06 19:33:23
如果您尝试将这两个代码转换为assembly语言(非常接近于机器语言),这两个代码将转换为完全相同的(first code,second code):
C:
void Main(){
int a=1, b=2, c= 3, res = 0;
if(a && b && c)
res = 100;
}
// or
void Main(){
int a=1, b=2, c= 3, res = 0;
if(a)
if(b)
if(c)
res = 100;
}程序集输出
Main():
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 1
mov DWORD PTR [rbp-8], 2
mov DWORD PTR [rbp-12], 3
mov DWORD PTR [rbp-16], 0
cmp DWORD PTR [rbp-4], 0
je .L3 ; jump to the end if `a` is not true
cmp DWORD PTR [rbp-8], 0
je .L3 ; jump to the end if `b` is not true
cmp DWORD PTR [rbp-12], 0
je .L3 ; jump to the end if `c` is not true
mov DWORD PTR [rbp-16], 100 ; otherwise do something
.L3:
nop
pop rbp
rethttps://stackoverflow.com/questions/55525632
复制相似问题