Pau*_*son 16

两者都将编译为相同的代码.您选择使用哪个应该取决于哪个最具可读性.

这个版本:

if(var_name == NULL)
Run Code Online (Sandbox Code Playgroud)

应该只有当使用var_name一个指针,否则你会迷惑人谁在未来的读取你的代码.如果你在非指针上使用它,一些编译器可能会抱怨.

这个:

if(!var_name)
Run Code Online (Sandbox Code Playgroud)

应该在逻辑上var_name作为布尔值(true/false)处理的情况下使用.这可以包括何时var_name是指针,因为NULL是"假"或未定义指针的值.

如果var_name是整数,那么我会选择第三个选项:

if(var_name == 0)
Run Code Online (Sandbox Code Playgroud)

因为我发现它更清楚地表达了意图.


小智 7

没关系.无论您使用何种编译器,两者都将非常高效,并且对于大多数编译器将编译为完全相同的代码.如果这是您真正关心的问题,请查看特定编译器发出的程序集/机器代码.


EKS*_*EKS 5

不要紧.

改变这种情况将是微观优化,并且不太可能改变你的应用程序的性能(除非你已经检查过这是瓶颈).除此之外,我敢打赌编译器会将此语句更改为最佳语句(如果它很重要),所以我会使用您喜欢的语法.