这个问题只是做之间的比较:
if(Null != Object){
/// code here.
}
if(Object != Null ){
/// code here.
}
如果一个条件语句优于另一个条件语句,任何人都可以插话吗?它取决于大小写吗?
我一直在使用Object != Null
,但我今天听说Null != Object
并想知道它的区别?
语言不可知论。
——感谢大家的参与!
这个问题只是做之间的比较:
if(Null != Object){
/// code here.
}
if(Object != Null ){
/// code here.
}
如果一个条件语句优于另一个条件语句,任何人都可以插话吗?它取决于大小写吗?
我一直在使用Object != Null
,但我今天听说Null != Object
并想知道它的区别?
语言不可知论。
——感谢大家的参与!
它们在逻辑上是相同的。
我认识一些喜欢的人,Null != Object
他们给出的最常见原因是:
=
而不是==
因为Null = <anything>
会导致编译器错误,因此不太可能出现错误。第一个原因有点过分(尽管我认为代码可读性不值得一试),但我非常反对第二个原因。我个人更喜欢Object != Null
可读性。它与所表达逻辑的实际口语形式相当接近。(请记住,代码主要是为人类阅读而编写的,只有次要目的是由机器执行。)
有些人喜欢使用它,Null != Object
因为它对拼写错误更安全。使用另一种形式,您的写作风险略高Object = Null
,这可能是一个严重且难以注意到的错误。
其他人更喜欢Object != Null
它,因为它用英语读起来更自然。
但它是完全风格的——这两种形式在功能上是等价的。
原因确实是因为C,并且通常处理相等运算符而不是不等运算符。这是因为在 C 中,你有=
and ==
,它们都做完全不同的事情。问题是很容易将一个误认为另一个,因此您最终可能会得到以下代码:
int *i = malloc(sizeof(int));
if (i=NULL) {
... do nothing?
} else {
free(i);
}
这是一个很难错过的错误,但这段代码应该使用==
运算符。问题是编译器认为这是正确的,而您的代码中存在错误。
除了风格之外,我不知道用不等式运算符这样做的原因。
有两件事仍然需要比较。