And*_*NER 23 c comparison performance null
除了宗教论点:
选项1:
if (pointer[i] == NULL) ...
Run Code Online (Sandbox Code Playgroud)选项2:
if (!pointer[i]) ...
Run Code Online (Sandbox Code Playgroud)在C中,option1在功能上等同于option2吗?
由于没有比较,后者会更快解决吗?
jal*_*alf 19
假设编译器编写者至少具有最低智能度通常很有用.你的编译器不是由混杂的小鸭子编写的.它由人类编写,具有多年的编程经验,并且花了数年时间研究编译器理论.这并不意味着您的编译器是完美的,并且总是最了解,但它确实意味着它完全能够处理琐碎的自动优化.
如果这两种形式是等价的,那么为什么编译器不会只将一种形式翻译成另一种形式以确保两者同样有效?
如果if (pointer[i] == NULL)
比较慢if (!pointer[i])
,编译器是否只会将其更改为第二种更有效的形式?
所以不,假设它们是等价的,它们同样有效.
至于问题的第一部分,是的,它们是等价的.语言标准实际上明确指出了这一点 - 如果指针是非NULL,则指针求值为true;如果指针为NULL,则求值为false,因此两者完全相同.
Tho*_*mas 18
我喜欢第二个,其他人喜欢第一个.
实际上,我更喜欢第三种:
if (NULL == ptr) {
...
}
Run Code Online (Sandbox Code Playgroud)
因为那时我:
在功能上它们是等价的.
即使NULL
指针不是"0"(全零位),if (!ptr)
也要与NULL
指针进行比较.
以下是不正确的.它仍然存在,因为有许多注释引用它: 不要将指针与文字零比较.它几乎可以在任何地方工作,但是未定义的行为IIRC.
归档时间: |
|
查看次数: |
63615 次 |
最近记录: |