C 里面判断两种条件是否都成立可以写成下面样式吗?

[复制链接]
3649|15
 楼主| hxdjb 发表于 2009-8-28 12:01 | 显示全部楼层 |阅读模式
se, pd
if((FNT0=1)&(FND=0))
    {TURE;}
FALSE;
注:FNT0 和FNPD是两个不同的标志位。
 楼主| hxdjb 发表于 2009-8-28 12:11 | 显示全部楼层
不好意思,把条件写成了赋值,改成下面这样。
f((FNT0==1)&(FND==0))
    {TURE;}
FALSE;
aozima 发表于 2009-8-28 12:26 | 显示全部楼层
如果你的FNT0  FND不是bool类型
请使用 &&

详情请goole:& &&区别
yewuyi 发表于 2009-8-28 12:52 | 显示全部楼层
呵呵,不是BOOL类型,有的时候也能用,但真正的含义可能和LZ想象的不一样了。。。
踢球老越位 发表于 2009-8-28 12:58 | 显示全部楼层
表达式(FNT0==1)的值与表达式(FND==0)的值进行相与,再判别结果。
HSP8031 发表于 2009-8-28 14:11 | 显示全部楼层
BOOL类型是什么类型?C里我没见过.
aozima 发表于 2009-8-28 17:38 | 显示全部楼层
BOOL类型是什么类型?C里我没见过.
HSP8031 发表于 2009-8-28 14:11

标准C确实没有bool
但我们确实经常用到 0和非0这种类型
就当我上面说的不严谨吧
希望没有误人子弟

不过 即使如此,还是要特别注意 &与&& |与|| 这些细节
Rainroad 发表于 2009-8-28 20:18 | 显示全部楼层
单片机c里有bit类型相当于bool
NE5532 发表于 2009-8-28 20:41 | 显示全部楼层
C没有布尔变量,不过楼主&和&&的写法有时候看起来结果确实是一样的,看下C语言的书,两个运算的类型不同。
yewuyi 发表于 2009-8-28 20:54 | 显示全部楼层
BOOL类型是什么类型?C里我没见过.
HSP8031 发表于 2009-8-28 14:11



BOOL变量是某些C编译器在某些型号上的扩展类型,呵呵,这个大家都是知道的 ,为什么都不愿意承认呢。
例如PICC里面有BIT变量,其实不就是 布尔类型吗?

即时在其它另外一些编译器里面也偶尔扩展有这个变量类型,当然ANSI C确实没有,但单片机C和标准C还是有点区别的。。。
xnwxq 发表于 2009-8-28 20:59 | 显示全部楼层
本帖最后由 xnwxq 于 2009-8-28 21:06 编辑

12楼说的对,
      在C语言(或C++)里本身没有bool这种布尔类型。而有些编译器可以识别,那也是因为编译器自己定义了bool类型,比如:#define bool int。
      BIT型变量可用变量类型,函数声明、函数返回值等,存贮于内部RAM20H~2FH。
     注意:(1) 用#pragma disable说明函数和用“usign”指定的函数,不能返回bit值。
      (2) 一个bit变量不能声明为指针,如bit *ptr;是错误的
      (3) 不能有bit数组如:bit arr [4];错误
      在NEC的处理器PM不支持BIT的参数传递,而Keil开发平台是支持的
      所以我在实际中很少使用位操作的方式,不便于程序的不同开发平台的移植!修改起来麻烦的很,使用公共的方式的话就可以实现0开发时间的消耗!
yewuyi 发表于 2009-8-28 21:33 | 显示全部楼层
要想具备通用性和方便移植,可采用下面的办法定义:

#define              ERRroomsensor        sysflag.bit0
#define              ERRdoorsingle        sysflag.bit1
#define              ERRrH                sysflag.bit2
#define              ERRrL                sysflag.bit3
#define              screenflash          sysflag.bit4
#define              exitbuzzer           sysflag.bit5
#define              cooldelayend         sysflag.bit6
#define              coolledflash         sysflag.bit7
#define              sys_osc_tip          sysflag.bit8
#define              write_eeprom         sysflag.bit9
typedef              struct               BYTE_BIT
{     
uchar                bit0:1;
uchar                bit1:1;
uchar                bit2:1;
uchar                bit3:1;
uchar                bit4:1;
uchar                bit5:1;
uchar                bit6:1;
uchar                bit7:1;
uchar                bit8:1;
uchar                bit9:1;
}BYTEBIT;
香水城 发表于 2009-8-28 21:57 | 显示全部楼层
的确在C里面没有布尔变量,但有布尔表达式,以二元运算符 ||  && ==  !=  <  >  <=  >= 参与的表达式就是布尔表达式,它的结果就是0和非0。

一般布尔表达式是用在条件判断语句中(if ... else ... 、for 、while),也可以把一个布尔表达式的结果赋值给一个变量(标量)或参与普通表达式的运算,此时对于结果非0,C的文本没有定义它的具体数值,原则上可以是任何数值,但多数编译器使用整数1或-1(或全'1',即0xFFFFFFFF)。
笃行者 发表于 2009-8-29 11:45 | 显示全部楼层
&是“按位与”运算符;
&&是逻辑与(相当于其它语言的AND);严格来说要用&& 。
李冬发 发表于 2009-8-29 13:08 | 显示全部楼层
BOOL就是int类型
bool则是扩展的基本类型
e掾木 发表于 2009-8-29 13:13 | 显示全部楼层
看了半天,LZ的C实在是不敢恭维。按照你这样的结构去运行,得不到你想要的{true}结果,除非被转义,执行了TRUE接下来就是执行FALSE了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

248

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部