打印

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

[复制链接]
2868|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hxdjb|  楼主 | 2009-8-28 12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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想象的不一样了。。。

使用特权

评论回复
5
踢球老越位| | 2009-8-28 12:58 | 只看该作者
表达式(FNT0==1)的值与表达式(FND==0)的值进行相与,再判别结果。

使用特权

评论回复
6
HSP8031| | 2009-8-28 14:11 | 只看该作者
BOOL类型是什么类型?C里我没见过.

使用特权

评论回复
7
aozima| | 2009-8-28 17:38 | 只看该作者
BOOL类型是什么类型?C里我没见过.
HSP8031 发表于 2009-8-28 14:11

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

不过 即使如此,还是要特别注意 &与&& |与|| 这些细节

使用特权

评论回复
8
Rainroad| | 2009-8-28 20:18 | 只看该作者
单片机c里有bit类型相当于bool

使用特权

评论回复
9
NE5532| | 2009-8-28 20:41 | 只看该作者
C没有布尔变量,不过楼主&和&&的写法有时候看起来结果确实是一样的,看下C语言的书,两个运算的类型不同。

使用特权

评论回复
10
yewuyi| | 2009-8-28 20:54 | 只看该作者
BOOL类型是什么类型?C里我没见过.
HSP8031 发表于 2009-8-28 14:11



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

即时在其它另外一些编译器里面也偶尔扩展有这个变量类型,当然ANSI C确实没有,但单片机C和标准C还是有点区别的。。。

使用特权

评论回复
11
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开发时间的消耗!

使用特权

评论回复
12
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;

使用特权

评论回复
13
香水城| | 2009-8-28 21:57 | 只看该作者
的确在C里面没有布尔变量,但有布尔表达式,以二元运算符 ||  && ==  !=  <  >  <=  >= 参与的表达式就是布尔表达式,它的结果就是0和非0。

一般布尔表达式是用在条件判断语句中(if ... else ... 、for 、while),也可以把一个布尔表达式的结果赋值给一个变量(标量)或参与普通表达式的运算,此时对于结果非0,C的文本没有定义它的具体数值,原则上可以是任何数值,但多数编译器使用整数1或-1(或全'1',即0xFFFFFFFF)。

使用特权

评论回复
14
笃行者| | 2009-8-29 11:45 | 只看该作者
&是“按位与”运算符;
&&是逻辑与(相当于其它语言的AND);严格来说要用&& 。

使用特权

评论回复
15
李冬发| | 2009-8-29 13:08 | 只看该作者
BOOL就是int类型
bool则是扩展的基本类型

使用特权

评论回复
16
e掾木| | 2009-8-29 13:13 | 只看该作者
看了半天,LZ的C实在是不敢恭维。按照你这样的结构去运行,得不到你想要的{true}结果,除非被转义,执行了TRUE接下来就是执行FALSE了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

131

主题

242

帖子

2

粉丝