是否建议在c中这样写条件语句
if(foo != 0) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
或者像这样
if(foo) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我知道它们总是会产生相同的结果,但为了可读性,建议使用哪种方法?
考虑可能有的各种类型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) ...
Run Code Online (Sandbox Code Playgroud)
但要避免愚蠢的人
if (foobool == 0.0) ...
if (fooi != NULL) ...
Run Code Online (Sandbox Code Playgroud)
if (0 == foo) ...
Run Code Online (Sandbox Code Playgroud)
一般来说,从积极的角度看待代码 if(foo)比从if (foo != 0)概念上更简单。我更if(foo == NULL)喜欢if(!foo)
你不认为避免否定负面因素并不是更容易理解,不是吗?