if(varName)和if(varName!= NULL)之间有什么区别?

时间:2016-10-01 15:47:03

标签: c performance variables if-statement null

这有什么区别:

if( varName != NULL ){
  // Do something
}

if( varName ){
 // Do something
}  

我的意思是,在处理速度方面有区别吗?或者只是表现更好?

PD:我正在和C合作。

1 个答案:

答案 0 :(得分:3)

在性能方面没有区别,但 intent 的差异可能很大。假设NULL宏定义为(void *) 0,则此代码为:

if( varName != NULL ) {
   // Do something
}

强制varName必须是指针对象。例如,以下代码将发出错误消息:

int varName = 0;
if ( varName != NULL ) {
    // Do something
}
  

错误:指针和整数之间的比较

因此,这种做法可能会被视为一种防御性编程,虽然它的价值是可以讨论的,因为这两种形式同样是惯用的。