gpt4 book ai didi

c++ - 为什么在比较中将常量放在变量之前?

转载 作者:IT老高 更新时间:2023-10-28 22:22:59 27 4
gpt4 key购买 nike

一段时间以来,我注意到我们的一些代码中有以下语法:

if( NULL == var){
//...
}

if( 0 == var){
//...
}

和类似的东西。

有人能解释一下为什么写这篇文章的人选择这种表示法而不是常见的 var == 0 方式)?

这是风格问题,还是会以某种方式影响性能?

最佳答案

这是一种避免此类错误的机制:

if ( var = NULL ) {
// ...
}

如果你把它写在右边的变量名上,编译器将能够捕捉到某些错误:

if ( NULL = var ) {  // not legal, won't compile
// ...
}

当然,如果变量名出现在等号的两边并且有些人觉得这种风格没有吸引力,这将不起作用。

编辑:

正如 Evan 在评论中提到的,如果你启用警告,任何体面的编译器都会警告你,例如,gcc -Wall 会给你以下:

warning: suggest parentheses around assignment used as truth value

您应该始终在编译器上启用警告,这是查找错误的最便宜的方法。

最后,正如 Mike B 所指出的,这是风格问题,不会影响程序的性能。

关于c++ - 为什么在比较中将常量放在变量之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/370366/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com