新闻资讯
看你所看,想你所想

bool

boo来自l表示布尔型变量,也就是逻辑型变量的定义符,以英国数学家、布尔代数的奠基人乔治·布尔刘坐推友改(George Boole)命名。bool类似于float,doub360百科le等,只不过float定义浮点型,double定义双精度浮点型。 在objective-c中提供了相似的类型BOOL,它具有YES值和NO值;在java中则对应于boolean类型。

  • 中文名称 布尔
  • 外文名称 BOOL
  • 属性 布尔型变量
  • 类似 float,double等
  • 奠基人 乔治·布尔

BOOL和boo呼的算害很老l

  1、类型不同

刑程然  bool为布尔型用作逻辑判断

  BOOL在<windef.h>typedef int BOOL;

  在<wtypes.h>typedef long BOOL;

  2、长度不阻完味脚增聚穿积乙盐区

  bool只有一个字节

  BOOL长度视实际环境来定,一般可认为是4个来自字节

  3、取值不同

  bool取值false和true,0为false,非0为true。(例如-1和2都是true)。

  如果数个bool对象列在一起,可能会各占一个B价缩孔师纸yte,这取决于编译360百科器。

  BOOL是微软定义的typedef int BOOL(在windef.h中),0为FALSE,1为TRUE。(-1和2振顾本损齐得会既不是TRUE也不是FALSE)。

  #ifndef FALSE

  #define FALSE 0

  #endif

  #ifndef TRUE

  #define TRUE 1

  #endif

  布尔型变量bool

  布尔型变量的值只有 真 (true) 和假 (false)。

  布尔型变量可用于逻辑表达式,也就是"或""与""非"之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算觉技般两车结果为真或为假。

  bool可用于定治友义函数类型为布尔型,函数里可以有 return TRUE; return FALSE 之类的语句。

图片

  布尔型运算结果常用于条件语句,

  if (逻辑表达式)

  {

  如果是 true 执行这里;

  }

  else

  {

  如果是 false 执行这里;

  };

  三、关于bool的小例子

  (1)

  #include<iostream>

  using namespace std;

  int main()

  {

  bool b =2; //执行此行后,b=true(整型2转为bool型后结果为true)

  if(b)

  cout << "ok!" << endl;

  b = b-1; //执行此行后,b=false(bool型数据true参与算术运算时会转为int值1,减能从委和材乡失夜数1后结果为0,赋值给b时会转换为bool值fa引席顶音掉望衡世同川lse)

  if(b)

  cout << "error!" <<endl;

  return 0;

  }

  运行结果:OK!

  (2)

  #include<iostream>

  #include<windef.h>

  using namespace std;

  int main()

  {

  BOOL b =2; 波行石财抓//执行此行后,b=2(BOOL为i村电办格孩nt此处不进行类型转换,则式答b存放的就是2)。

  if(b)

  cout << "ok!" << endl;

  b=b革确城求往连深我做-1; //执行此行后,b=1(只是简单的进行算术运算,结果为1,回存)

  if(b) // b非0,条件为真

  cout << "error!" <<endl;

  ret拿何青议死身物urn 0;

  }

香帝施货致那似  运行结果:OK!

  error!

  若想更了解的话,读者丝受山出火队市可以在定义b时改成 bool b=0;看看运行结果

C99新增类型 _Bo采坏天由侵顶合植杨丰维ol

  C99标准定义了一个新的关键字_Bool,提供了布尔类型。以前,C程序员总是使用自己的方法定义布尔类型。0表示false,非0表示true。可能使用char类型表示一个布尔类型,也可能使用int类型表示一个布尔类型。很多函数库都定义了自己的布尔类型和相应的宏,枚举,typedef。C99把C语言原生的布尔类型带来了。C99中同时增添的关键字还有_Complex,_Imaginary等。

  <stdbool.h>

  这个头文件定义了bool,true,false等宏。

  C2008草案中说:

  "An object declared as type_Boolis large enough to store the values 0 and1."

  也就是说,只规定了_Bool类型的大小是至少能够存放0和1这两个值。并没有规定具体的大小。这交给编译器自由发挥了。

  用gcc(32位环境)做下面的测试:

  #include <stdio.h>

  #include <stdbool.h>

  #include <stdlib.h>

  int main(void)

  {

  printf("sizeof(bool):%d\n",sizeof(bool));

  printf("sizeof(char):%d\n",sizeof(char));

  printf("sizeof(int):%d\n",sizeof(int));

  printf("sizeof(long):%d\n",sizeof(long));

  return EXIT_SUCCESS;

  }

  输出结果:

  sizeof(bool):1

  sizeof(char):1

  sizeof(int):4

  sizeof(long):4

  由此可见,gcc是用char来实现_Bool类型的。

  看看给_Bool类型赋值会怎样:

  #include <stdio.h>

  #include <stdbool.h>

  #include <stdlib.h>

  int main(void)

  {

  bool boolean=-11212112;

  printf("boolean:%d\n",boolean);

  return EXIT_SUCCESS;

  }

  输出结果:

  boolean:1

  可以看到,gcc编译器对待_Bool类型有自己的转换处理。如果是0赋值给_Bool类型,那么就赋值0。如果是任意其他数据,那么会赋值为1。(只是不知道其他编译器是否如此处理,C2008标准草案没有细说这个部分)

  _Bool类型只有0和1这两个值。

转载请注明出处一千网 » bool

分享:

相关推荐

    影视大全