正在使用;if(varname)";比“更高效”;如果(varname!=0)“;? 我们假设有两个C++代码片段: int x=3; if(x) { //do stuff }

正在使用;if(varname)";比“更高效”;如果(varname!=0)“;? 我们假设有两个C++代码片段: int x=3; if(x) { //do stuff },c++,C++,哪一个在计算速度方面更有效?第一个写起来更方便,因为它更短,但我不确定它是否也更快 哪一个在计算速度方面更有效 都不是 一些编码惯例建议使用后者,但第一种可以被认为是可读的和常规的。在他们之间选择是一个品味的问题 哪一个在计算速度方面更有效 if(x)和if(x!=0)以相同的速度运行。 他们都会做一个比较 第一个写起来比较方便,因为它比较短,但我不是 当然,它也更快 取决于意图。如果您正在检查指针,那么如果(p)更清晰(IMO)与性能完全相同。我支持x!=0但是,因为更清楚的是,我们使用的是一

哪一个在计算速度方面更有效?第一个写起来更方便,因为它更短,但我不确定它是否也更快

哪一个在计算速度方面更有效

都不是

一些编码惯例建议使用后者,但第一种可以被认为是可读的和常规的。在他们之间选择是一个品味的问题

哪一个在计算速度方面更有效

if(x)
if(x!=0)
以相同的速度运行。
他们都会做一个比较

第一个写起来比较方便,因为它比较短,但我不是 当然,它也更快


取决于意图。如果您正在检查指针,那么
如果(p)
更清晰(IMO)

与性能完全相同。我支持
x!=0
但是,因为更清楚的是,我们使用的是一个数值。如果您有一个布尔值或指针,那么执行
If(x)
就可以了。但这都是首选项。@John如果(x)则效率更高,因为它不太容易出错。例如,有时条件if(x!=0)是意外编写的,如if(x=!0)。:)@一般来说,你为人编写代码。):在C++中,你编写的代码是用来描述行为的。code>if(x)和
if(x!=0)
描述了与
x
int
时完全相同的行为。如果一个程序集的等效性会比另一个的快,那么编译器应该足够聪明地执行转换。对于新C++程序员来说,并不总是显而易见的,即C++编译器不只是直接将C++源代码转换成相应的CPU操作码。相反,它将C++源转换为内部低级别表示,然后在其上运行一系列非常复杂的优化转换,然后将低级指令翻译成适当的CPU操作码。在所有优化步骤完成后,程序保证与原C++代码的行为相同,但是可以完全不同地执行。抱歉,因为Noky,但是IHO已经“以相同的速度运行”是误导的。大多数时候,你不需要关心一段C++代码是否对应于硬件所执行的指令,这是一件好事。如果编译器可以推断
x
永远不为零,那么在最终的程序中,可能没有为此“运行”任何内容condition@formerlyknownas_463035818“无”的运行速度与“无”的运行速度相同。
int x=3;  
if(x!=0)  
{ 
//do stuff  
}