精华内容
下载资源
问答
  • C99的新关键字_Bool

    千次阅读 2016-03-18 18:37:48
    C99标准定义了一个新的关键字_Bool,提供了布尔类型。以前,C程序员总是使用自己的方法定义布尔类型。  0表示false,非0表示true。 可能使用char类型表示一个布尔类型,也可能使用int类型表示一个布尔类型。 很...

    C99标准定义了一个新的关键字_Bool,提供了布尔类型。以前,C程序员总是使用自己的方法定义布尔类型。

     0表示false,非0表示true

    可能使用char类型表示一个布尔类型,也可能使用int类型表示一个布尔类型。

    很多函数库都定义了自己的布尔类型和相应的宏,枚举,typedef

         

    现在C99C语言原生的布尔类型带来了。


    #include<stdbool.h>


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

    #ifndef__cplusplus

    如果不是C++,是纯C,那么,定义宏bool相当于_Bool类型。

    #definebool_Bool

    #definetrue 1

    #definefalse 0


    #else/* __cplusplus */

    如果是C++,那么定义_Bool类型为bool类型。

    /*Supporting <stdbool.h> in C++ is a GCC extension. */

    #define_Bool bool

    #definebool bool

    #definefalse false

    #definetrue true


    #endif/* __cplusplus */


    /*Signal that all the definitions are present. */

    #define__bool_true_false_are_defined 1


    看看上面这个宏是否==1,如果是,表示上面这些定义可用。


    C2008草案中说:

         Anobject declared as type_Boolis large enough to store the values 0 and1.

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


    我用gcc做了一下测试:

    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));


    --sizeof(bool):1

    --sizeof(char):1

    --sizeof(int):4

    --sizeof(long):8

    看来gcc是用char来实现_Bool类型的。


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

    boolboolean=-11212112;

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


    --boolean:1

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


          以前一直用!逻辑非运算符:

    if(!flag){

    }

         来表示0和非0。现在_Bool类型就只有01这两个值!


    展开全文
  • bool bTestFlag = FALSE;// FLASE的值在编译器里被定义为0;  如果if(bTestFlag == 0); if(bTestFlag == 1);这种写法很容易会让人误会成整型变量;  如果if(bTestFlag == TRUE); if(bTestFlag == FLASE)...

    /*****************************************************************************************************************************************

    *Author:JYW

    *Time:2019_02_15

    *Describe:学而记之进而习之

    *****************************************************/

    以下为C语言深度剖析的学习笔记

    bool  bTestFlag   = FALSE;//FLASE的值在编译器里被定义为0;

             如果if(bTestFlag == 0);       if(bTestFlag == 1);这种写法很容易会让人误会成整型变量;

              如果if(bTestFlag == TRUE);  if(bTestFlag == FLASE);FLASE的值在编译器里被定义为0;但TURE的值在不同的编译器里并不完全是1;Visual C++定义为1,而Visual Basic 把TRUE定义为-1.故这种写法也不好。

    if(bTestFlag);    if(!bTestFlag);

    if语句是靠其小括号里面的表达式的值来进行执行的,如果为真的话就会执行后面的代码,如果为假的话就不会执行后面的代码;if(bTestFlag);    if(!bTestFlag);这样写既不会引起误会,也不会由于TRUE或FLASE的定义不同而出错了,以后的代码就要

    这样写;

    float 和double类型的数据都是有精度限制的,显然

    不能拿来直接与0.0进行比较,EPSINON 为定义好的精度,如果一个数落在[0.0-EPSINON,  0.0+EPSINON]这个闭区间之内,我们可以认为在这个精度内它的值与零值相等;

    //定义指针一定要同时初始化;NULL的值和0一样

    p不是整型变量,也不是bool变量;

    这个样子写是怕漏写一个“=”号,

    if(p = NULL);这个表达式编译器认为是正确的,但却不是我们要表达的意思;

     

    书写要规范化;具有良好的书写敲击规范;

    if语句的后面不需要分号,如果不小心加了个分号,编译器并不会提示出错,编译器会把这个分号解析成一条空语句;

    这两个是等效的;

    所以建议在真正需要用空语句时写成这样:NULL;

    使用if语句时的其他注意事项:先处理正常情况,再处理异常情况;确保if和else没有弄反。。

     

     

     

     

     

     

    展开全文
  • 非值关键字,主要参与语法构建,多个关键值可以按规则组合使用, ...值关键字包括bool,int,char,byte,double,float等。 非值关键字包括namespace,class,void,static,unsave,as,is,ref,out,case,swich等
  • C语言关键字浅析-_Bool

    千次阅读 2018-11-29 08:40:02
    _Bool关键字看上去并不像C语言其他常见的关键字,更像是个变量名 这样的下划线开头的关键字在C语言有三个:_Bool、_Complex、_Imaginary 如果你清楚C或C++语言的bool类型,看到_Bool可能会第一时间联想到bool类型...

    ### C语言关键字浅析系列 ###

    ### ISO/ANSI C 关键字 ###

    _Bool关键字看上去并不像C语言其他常见的关键字,更像是个变量名

    这样的下划线开头的关键字在C语言有三个:_Bool、_Complex、_Imaginary

    如果你清楚C或C++语言的bool类型,看到_Bool可能会第一时间联想到bool类型,实际上它们也差不多

     

    _Bool的作用是:

    声明布尔变量。

     

    1、_Bool的使用

    与定义变量的类型关键字一样,_Bool以下面这种方式定义布尔变量:

    /* 负责输入值的语句 */
    int i;
    _Bool input_over;   /* 布尔变量名可以取得顾名思义一些 */
    input_over = scanf("%d", &i);
    while (!input_over)
    {
    	printf("Error, input again:");
    	scanf("%d", &i);
    }

    一般的,一个_Bool变量只能有两个值——1/0,分别表示真/假,如果把它赋值为另一个非零值,则变量还是被赋值为1

    所以对于_Bool类型,任何非零值在逻辑表达式中都被认为是“真”,只有0表示“假”

     

    2、_Bool、BOOL、bool傻傻分不清

    虽然从作用上看,三者都可以表示布尔类型,不过他们还是有着自己的故事,甚至本质的区别

    (1)BOOL

    生在上世纪后半叶,并且从事计算机科学的话,你就会知道,那时候的C语言中没有bool这样的类型。那如何表示这种布尔关系呢?

    微软说,不是还有typedef吗,故其自作主张,定义了BOOL这种类型,不过它的实质其实是:

    typedef int BOOL;

    也就是说,BOOL类型其实是一个int类型,所以它占用的内存放在32位int的机器中是4byte,这其实比后来的bool要大很多倍

    现在编写C程序的时候BOOL可能用的不太多,如果还需要使用BOOL,可以记住它原本的自定义,自己加在程序中,或者引用包

    不过现在写布尔类型一般都用_Bool和bool了

    (2)bool

    其实在C99之前,C语言没有bool类型这个说法,对于C语言,bool类型相当于舶来语、外来客

    这是一段尘封的历史:一个关键的结点就是1992年,Microsoft Visual C++ 1.0推出,在这之前,微软使用自定义的BOOL类型表示布尔变量,布尔变量的bool其实是来源于英国数学家乔治·布尔(George Boole)。

    92年之前,那时候C的“布尔类型”都是用整数类型表示,但C++的推出,出现了bool类型的定义,注意bool类型在C++的标准中从最初开始就一直有。而作为C的扩展的C++中有了bool的定义,C自己当时却仍然没有对布尔类型的定义,于是在C99标准中,新增了_Bool类型,其本质和用法与C++的bool是类似的。

    不过需要注意的是,目前的C语言版本中仍然只支持_Bool不支持bool,C++中也不一定支持_Bool而都使用bool,这也算是二者的一个区别。其联系在于,用法差不多,本质也类似,都只占用1byte内存。其实原理上来说1bit就能表示真假,不过C语言中非零值都表示真,0表示假,1byte的内存允许用户用其他非零值表示真,可能会带来某些程序实现上的便利。

    (3)_Bool

    也就是说,C语言见其后起之秀C++中一开始就有了bool类型的定义,而自己仍然在使用整型表示布尔关系,不服气

    一气之下在C99中新增了_Bool类型,而且看上去和bool不一样,有点我行我素的意味在里面,不过C++的bool确实比C的_Bool出现的早

     

    3、C语言标准的发展史

    1978年,国内正值改革开放,而大洋对岸也发生了一件计算机行业内比较轰动的事——K&R C标准出现

    K&R其实是两位大神,Brian Kernighan和Dennis Ritchie的简称,后者对于程序员再熟悉不过了,即丹尼斯·里奇,C语言和UNIX之父

    二位合作发行了一本书——《The C Programming Language》的第一版,该书最有意义的部分在于末尾的参考指南

    别小看这份参考指南,它给出了一份当时C语言的完整定义,这被认为是C语言出现后的第一项C标准,被称为K&R C

    随后C语言迎来了第一春,跑在了很多的各类机型上,C程序软件也一时风靡,受到了广泛支持

    逐渐的,由于C的广泛应用和各种人们新增的特性被写到了各类编译器中,考虑到保证C的良好移植性,业内渴求一份新的更全面的C标准

    于是乎,1983年,ANSI(美国国家标准协会)开始组织部门研究C语言的新标准,该标准于1989年被ANSI通过,称为C89或者ANSI C

    至此,C语言有了国家级的标准,而国界不是阻拦C语言漂洋过海发展的拦路虎,C语言的更广泛应用不能缺少国际标准的制定

    ANSI C通过后,《The C Programming Language》的第二版也根据C89开始编撰和发行,C89在技术上相比K&R C完善了很多

    次年,1990年,在ISO(国际标准化组织)的努力下,通过了ANSI C成为国际标准,即ANSI C成为了ISO C

    二者在标准文档上有细微区别,但技术上没有改变,所以ISO/ANSI C从技术上说是一样的

    随后ISO还是对ISO C的文档继续做了一些功课,完善了很多文字上的细节问题,扩充了点文档(毕竟作为标准,文档要认真下功夫)

    在1995年又发布了扩充后的ISO C标准,史称C95

    离目前最关键的一次标准制定是1999年发生的,ISO/ANSI根据时代的变化在技术上加了一些东西,包括_Bool等一些关键字的新增,一些技术上的改动,为用户在技术层面提供了更好的便利性,这就是目前还在遵循的C99标准,是至今2018年最权威和最新的C标准。

    _Bool、_Complex、_Imaginary就是C99新增的三种基本数据类型

     

    ——参考《C Primer Plus第五版》

     

    展开全文
  • bool 和_Bool , bool & _Bool

    千次阅读 2018-03-26 16:24:03
    _Bool是C99新增加的关键字,长度是1, 在C++中,又把bool重定义为_Bool ,typedef bool _Bool; void l_Bool(void) { printf("sizeof(_Bool) is %d\n",sizeof(_Bool)); } void lbool(void) { pri...

    bool是C++的关键字,一种数据类型,长度是4!!!
    _Bool是C99新增加的关键字,长度是1,
    在C++中,又把bool重定义为_Bool ,typedef bool _Bool;

    void l_Bool(void)
    {
        printf("sizeof(_Bool) is %d\n",sizeof(_Bool));
    
    }
    
    void lbool(void)
    {
        printf("sizeof(bool)=%d\n",sizeof(bool));
    }

    -> l_Bool
    sizeof(_Bool) is 1
    value = 19 = 0x13
    -> lbool
    sizeof(bool)=4
    value = 15 = 0xf
    ->

    展开全文
  • // // stdbool.h // ... All rights reserved. // // The C Standard Library <stdbool.h> header. // #ifndef _STDBOOL ...#define __bool_true_false_are_defined 1 #ifndef __cplusplus #define bool _Bo
  • 代码: int N = 6000; int M = 100; clock_t a, b;...error : declaration is incompatible with "__nv_bool all(__nv_bool)" 解决(猜测): 定义的全局变量all,可能和关键字冲突,换成其...
  • Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它...Python中有六个标准的数据类型:数据类型定义可变性Number(数字)int, bool, float, co...
  • '''关键字:False:bool数据类型True:bool数据类型None:表示数据的内容为空and:逻辑运算符:与or:逻辑运算符:或not:逻辑运算符:非in:身份运算符,判断变量是否在序列中is :成员运算符,判断变量是否为某个类...
  • 正文#方法一:使用string.Contains方法string.Contains是大小写敏感的,如果要用该方法来判断一个string是否包含某个关键字keyword,需要把这个string和这个keyword都转成小写或大写再调用Contains方法;string key ...
  • 【bool、BOOL 和 _Bool 的区别】bool 类型在 C++ 中以关键字的形式被支持,表示布尔类型,其对应变量的值只有真(true)和假(false)两种值。BOOL 类型在头文件 中定义为 typedef int BOOL;在头文件 中定义为 typed...
  • _Bool,BOOL,bool的区别~

    2017-03-01 20:35:47
    【 bool、BOOL 和 _Bool 的区别 】 bool 类型在 C++ 中以关键字的形式被支持,表示布尔类型,其对应变量的值只有真(true)和假(false)两种值。 BOOL类型 ·字节长度在头文件 中定义为 typedef int BOOL;在...
  • C++内置对布尔类型的支持,其关键字是bool,C语言直到C99标准才增加了对布尔类型的支持,关键字_Bool,因为bool已经被C++用了, 所以选了这个十分奇怪的关键字。在这之前C程序员对布尔类型的模拟是相当混乱的。...
  • 最近在搞跨平台编译的时候又遇到了 C99 标准支持的问题,...【bool、BOOL 和 _Bool 的区别】 bool 类型在 C++ 中以关键字的形式被支持,表示布尔类型,其对应变量的值只有真(true)和假(false)两种值。 BOOL 类...
  • Windows 中BOOL变量常见的好几种类型:小写的bool,大写的BOOL ,还有VARIANT_BOOL 。 小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 ...
  • bool,BOOL,VARIANT_BOOL区别

    千次阅读 2012-05-24 15:12:07
    Windows 中BOOL变量常见的好几种类型:小写的bool,大写的BOOL ,还有VARIANT_BOOL 。 小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 ...
  • COM 之 VARIANT_BOOL

    2013-09-16 09:53:36
    Windows 中BOOL变量常见的好几种类型:小写的bool,大写的BOOL ,还有VARIANT_BOOL 。  小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 ...
  • C++中 bool,BOOL ,VARIANT_BOOL 的区别 1.小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 false 也都是C++ 标准定义的...
  • 在做教务系统的时候,一个学生(alumni_info)有多个教育经历(alumni_education),使用的数据库是mysql,...由于是第一次在mysql中使用exists,百度了一番,现将自己的总结如下:1、exists的返回结果是bool型,只有tru...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 673
精华内容 269
关键字:

关键字_bool