C++ 使用两个if';s在c++;

C++ 使用两个if';s在c++;,c++,if-statement,C++,If Statement,两者之间有什么区别吗 if (firstCheck()) return; if (secondCheck()) return; 及 ? 我的问题的焦点是运行时 不,没有区别。优化编译器应生成相同的二进制文件 没有办法说一个比另一个好。如果这两个条件密切相关,我会将它们写在一个If子句中,如果它们是独立的,我会使用两个。不,没有区别。优化编译器应生成相同的二进制文件 没有办法说一个比另一个好。如果这两个条件密切相关,我会将它们写在一个If子句中,如果它们是独立的,我会使用两个。

两者之间有什么区别吗

if (firstCheck())
    return;

if (secondCheck())
    return;

?


我的问题的焦点是运行时

不,没有区别。优化编译器应生成相同的二进制文件


没有办法说一个比另一个好。如果这两个条件密切相关,我会将它们写在一个
If
子句中,如果它们是独立的,我会使用两个。

不,没有区别。优化编译器应生成相同的二进制文件


没有办法说一个比另一个好。如果这两个条件密切相关,我会将它们写在一个
If
子句中,如果它们是独立的,我会使用两个。

否,这称为“短路”。布尔型的内置
运算符| |
仅在第一个参数为
false
时计算第二个参数

否,这称为“短路”。布尔型的内置
运算符| |
仅在第一个参数为
false
时计算第二个参数

假设为常规病例,两者相似


对于棘手/邪恶的情况,
firstCheck()
/
secondCheck()
返回自定义类型,并使用重载的
运算符| |
,它们是不同的。

假设常规情况,两者都是相似的


对于棘手/邪恶的情况,
firstCheck()
/
secondCheck()
返回自定义类型,重载的
运算符| |
,它们是不同的。

不确定这是如何“主要基于意见”的。编译器是否会生成不同的代码,其中一个比另一个效率更高,这是一个简单的是/否问题,可以肯定地回答。不,这两种方法是相等的。真的没有冒犯的意思,但我认为,担心这种微观优化而不是可读性是不好的做法。编写可读的代码,让编译器完成它的工作;)不确定这是如何“主要基于意见”。编译器是否会生成不同的代码,其中一个比另一个效率更高,这是一个简单的是/否问题,可以肯定地回答。不,这两种方法是相等的。真的没有冒犯的意思,但我认为,担心这种微观优化而不是可读性是不好的做法。编写可读的代码,让编译器完成它的工作;)因此,第二个平均速度更快(取决于第一个参数为假的频率)?@monamona使用gcc 7.2和优化,生成的代码是相同的:没有优化,两个
如果使用gcc 7.2生成较短的代码:(仅此编译器为真,您必须检查其他)@monamona:No-在第一个示例中,
secondCheck
也仅在
firstCheck
为false时才进行计算,但在第一个示例中,这是因为第一个
if
语句的主体包含一个
返回值
。因此第二个语句的平均速度更快(取决于firste参数为false的频率)?@monamona with gcc 7.2和优化,生成的代码是相同的:在没有优化的情况下,如果两个
使用gcc 7.2生成一个较短的代码:(仅此编译器为true,您必须检查其他编译器)@monamona:No-在第一个示例中,
secondCheck
也仅在
firstCheck
为false时进行计算,但在第一个示例中,这是因为第一个
if
语句的主体包含一个
return
if (firstCheck() || secondCheck())
    return;