c - if(varName) 和 if(varName!=NULL) 有什么区别?

标签 c performance variables if-statement null

这有什么区别:

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

还有:

if( varName ){
 // Do something
}  

我的意思是,处理速度方面有区别吗?还是只是性能更好?

PD:我正在与 C 合作。

最佳答案

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

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

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

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

error: comparison between pointer and integer

因此,这种做法可能被认为是一种防御性编程,尽管它的值(value)是相当值得讨论的,因为两种形式都是同样惯用的。

关于c - if(varName) 和 if(varName!=NULL) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39808539/

相关文章:

python - 使用共享 C 库的 3D numpy 数组迭代

arrays - C 结构体可以包含指向其他结构体数组的指针(具有不同的长度)

python - 在 python 工作流中调整 Postgresql 性能和内存使用

javascript - 由于 JQuery 脚本,页面的无尽 "loading"。如何解决?

mysql - 删除 Mysql Workbench 中字符串的可变部分

java - 在 Java 中为变量分配动态名称

c - 如何将两个数组一起排序,其中第一个数组使用冒泡排序进行排序?

c - C 中有没有办法让函数返回唯一的函数?

Oracle 调整/分析表

Php 准备语句在绑定(bind)变量中返回 0,SQL 语句在数据库中工作正常