C语言BOOL值与零值判断的问题

记得有这么一个笔试题,
请写出 BOOL flag 与“零值”比较的 if 语句.

标准答案:
if ( flag )
if ( !flag )

然后说如下写法均属不良风格,不得分。
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)

我的问题是,为什么这些是不良风格呢.
高手们能说说其中的原因吗?

谢谢了.

第1个回答  2010-01-23
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)

flag == TRUE 这个还要进行一次比较操作,
if ( flag )就直接进行了判断.

而且 有== 这个一般是和int型的作比较,

比如 if(i==3)
如果是bool型的话,容易混淆.

所以比较统一的写法是 :

if ( flag )
if ( !flag )

补充一下:

如果是指针型,就这样比较
if(p==NULL)
if(p!=NULL)

整型
if(i==3)
if(i!=3)

bool型
if(b)
if(!b)

就这个意思,本回答被提问者采纳
第2个回答  2015-10-30
C语言没有BOOL类型变量
boolean类型是C++所独有的,其别名有bool 和 BOOL,都可以定义布尔变量。
由于使用BOOL类型可以使代码更具有可读性,很多编程者都在C中自己定义了类似的应用,一般方法有两种:
一、采用宏定义方式(windef.h中就是用的这种方式)
typedef int BOOL ;
#define true 0
#define false 1

二、采用枚举型变量方式(这种方式使用起来,更象C++的boolean类型)
typedef enum { true=0, false} BOOL;
接下来就可以象C++一样,方便的使用BOOL类型了。
第3个回答  2010-01-23
你可以看一下 有关编程规范的书。推荐华为的。
这些都不是错误,只是代码的一些规范书写。这样可增加代码的可读性与扩展性。其实,有些规范有点不人性,不过谁叫别人是权威呢。
相似回答