c if语句检查零
c if statement check for zero
c中是否推荐这样写条件
if(foo != 0) {
// do stuff
}
或者像这样
if(foo) {
// do stuff
}
我知道它们总是会产生相同的结果,但为了便于阅读,推荐使用哪种方法?
相信if(foo != 0)
更清楚。它在某种程度上也表明 foo 可以与 0
.
进行比较
当我看到 if(foo)
是 foo
一个 bool
还是其他东西?
考虑 foo
可能具有的各种类型。最好的是上下文相关。
我喜欢每组第一名。
void *fooptr = bar();
if (fooptr) ...
if (fooptr != NULL) ...
if (fooptr != 0) ...
int fooi = bar();
if (fooi != 0) ...
if (fooi) ...
double foofp = bar();
if (foofp != 0.0) ...
if (foofp) ...
bool foobool = bar();
if (foobool) ...
int (*foofun)() = bar();
if (foofun) ...
if (foofun != NULL) ...
if (foofun != 0) ...
但要避免愚蠢的
if (foobool == 0.0) ...
if (fooi != NULL) ...
而且我什至没有碰 style (trying to avoid a holy war)
if (0 == foo) ...
一般来说,从积极的意义上看代码 if(foo)
与 if (foo != 0)
相比,在概念上更简单。我更喜欢 if(foo == NULL)
而不是 if(!foo)
你不认为避免否定否定不是更容易理解吗?
c中是否推荐这样写条件
if(foo != 0) {
// do stuff
}
或者像这样
if(foo) {
// do stuff
}
我知道它们总是会产生相同的结果,但为了便于阅读,推荐使用哪种方法?
相信if(foo != 0)
更清楚。它在某种程度上也表明 foo 可以与 0
.
当我看到 if(foo)
是 foo
一个 bool
还是其他东西?
考虑 foo
可能具有的各种类型。最好的是上下文相关。
我喜欢每组第一名。
void *fooptr = bar();
if (fooptr) ...
if (fooptr != NULL) ...
if (fooptr != 0) ...
int fooi = bar();
if (fooi != 0) ...
if (fooi) ...
double foofp = bar();
if (foofp != 0.0) ...
if (foofp) ...
bool foobool = bar();
if (foobool) ...
int (*foofun)() = bar();
if (foofun) ...
if (foofun != NULL) ...
if (foofun != 0) ...
但要避免愚蠢的
if (foobool == 0.0) ...
if (fooi != NULL) ...
而且我什至没有碰
if (0 == foo) ...
一般来说,从积极的意义上看代码 if(foo)
与 if (foo != 0)
相比,在概念上更简单。我更喜欢 if(foo == NULL)
而不是 if(!foo)
你不认为避免否定否定不是更容易理解吗?