在c中建议写这样的条件
if(foo != 0) {
// do stuff
}
或者像这样
if(foo) {
// do stuff
}
我知道他们总会产生相同的结果,但建议使用哪种方法以提高可读性?
答案 0 :(得分:2)
考虑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)
你不认为避免否定否定是不可理解的,不是吗?
顺便说一句:
if (foofp != 0.0) ...
// is not the same as
if (!(foofp == 0.0)) ...
// consider NaN
答案 1 :(得分:0)
我相信if(foo != 0)
更清楚。有些人还表明,foo可以与0
进行比较。
当我看到if(foo)
foo
是bool
还是其他内容时?