bool和BOOL有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/06/01 21:46:45
是不是一样啊?到底怎么用啊?

objective-c 中的BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用8位的存储空间。通过#define指令把YES定义为1,NO定义为0。

  注意:objective-c 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理。编译器仍将BOOL认作8位二进制数,YES 和 NO 值只是在习惯上的一种理解。

如果不小心将一个大于1字节的整型值(比如short或int)赋给一个BOOL变量,那么只有低位字节会用作BOOL值。如果该低位字节刚好为0(比如8960,写成十六进制为0x2300),BOOL值将会被认作是0,即NO值。而对于bool类型,只有true和false的区别,即0为false,非0为true。

  例如:
  BOOL b1=8960; // 实际是 NO,因为8960换成十六进制为0x2300,BOOL 只有8位存储空间,取0x2300的低8位,00,所以是NO

  bool b2=8960;//实际是true,因为bool类型,非0即为true。

1、类型不同
BOOL为int型
bool为布尔型
2、长度不同
bool只有一个字节
BOOL长度视实际环境来定,一般可认为是4个字节
3、取值不同
bool取值false和true,是0和1的区别
BOOL取值FALSE和TRUE,是0和非0的区别

BOOL是微软定义的typedef int BOOL(在windef.h中),0为FALSE,1为TRUE。(-1和2既不是TRUE也不是FALSE)。
bool取值false和true,0为false,非0为true。(例如-1和2都是true)。

bool是关键字,像int、float一样它定义了一个变量类型;
例如bool a; a就是一个布尔变量。布尔变量在值只能为0或1.

BOOL一楼说的

BOOL在windows编程VC中的一个类型和bool 完全一样!