精华内容
下载资源
问答
  • C语言中的真假

    万次阅读 2011-12-17 17:50:34
     在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为...

         也许很多人都和我一样,不知道现在的C语言已经有了布尔型:从C99标准开始,类型名字为“_Bool”。

            在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式返回的结果,也就是布尔类型转化为其他类型时,比如 a==b的返回结果,只有0和1两种可能)。(即使有了bool类型,这些依然适用,比如在kernel的代码中到处是这个准则)

            所以,现在只要你的编译器支持C99(我使用的是Dev C++4.9.9.2),你就可以直接使用布尔型了。另外,C99为了让CC++兼容,增加了一个头文件stdbool.h。里面定义了booltruefalse,让我们可以像C++一样的定义布尔类型。

    1. 我们自己定义的“仿布尔型”
            在C99标准被支持之前,我们常常自己模仿定义布尔型,方式有很多种,常见的有下面两种:

    /* 第一种方法 */
    #define TRUE 1
    #define FALSE 0
    
    
    /* 第二种方法 */ 
    enum bool{false, true}; 

    2. 使用_Bool

            现在,我们可以简单的使用 _Bool 来定义布尔型变量。_Bool类型长度为1,只能取值范围为0或1。将任意非零值赋值给_Bool类型,都会先转换为1,表示。将零值赋值给_Bool类型,结果为0,表示。 下面是一个例子程序。

    #include <stdio.h> 
    #include <stdlib.h>  
    
    int main(){
        _Bool a = 1;
        _Bool b = 2;    /* 使用非零值,b的值为1 */ 
        _Bool c = 0;
        _Bool d = -1;   /* 使用非零值,d的值为1 */ 
        
        printf("a==%d,  /n", a);
        printf("b==%d,  /n", b);
        printf("c==%d,  /n", c);
        printf("d==%d,  /n", d);
    
        printf("sizeof(_Bool) == %d  /n", sizeof(_Bool));
        
        system("pause");
        return EXIT_SUCCESS;
    }

    运行结果如下:(只有0和1两种取值)
    a==1,
    b==1,
    c==0,
    d==1,
    sizeof(_Bool) == 1

    3. 使用stdbool.h

            在C++中,通过bool来定义布尔变量,通过truefalse对布尔变量进行赋值。C99为了让我们能够写出与C++兼容的代码,添加了一个头文件<stdbool.h>。在gcc中,这个头文件的源码如下:(注,为了清楚,不重要的注释部分已经省略)

    /* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
            This file is part of GCC.
     */
    
    #ifndef _STDBOOL_H
    #define _STDBOOL_H
    
    #ifndef __cplusplus
    
    #define bool	_Bool
    #define true	1
    #define false	0
    
    #else /* __cplusplus ,应用于C++里,这里不用处理它*/
    
    /* Supporting <stdbool.h> in C++ is a GCC extension.  */
    #define _Bool	bool
    #define bool	bool
    #define false	false
    #define true	true
    
    #endif /* __cplusplus */
    
    /* Signal that all the definitions are present.  */
    #define __bool_true_false_are_defined	1
    
    #endif	/* stdbool.h */

             可见,stdbool.h中定义了4个宏,bool、true、false、__bool_true_false_are_defined。 其中bool就是 _Bool类型,true和false的值为1和0,__bool_true_false_are_defined的值为1。
    下面是一个例子程序

    #include <stdio.h> 
    #include <stdlib.h> 
    #include <stdbool.h>
    
    /* 测试C99新添加的头文件 stdbool.h */
    
    int main(){
        bool m = true;
        bool n = false;
        printf("m==%d,  n==%d  /n", m, n);
        
        printf("sizeof(_Bool) == %d  /n", sizeof(_Bool));
    
        system("pause");
        return EXIT_SUCCESS;
    }
    

    执行结果为:

    m==1, n==0 sizeof(_Bool) == 1

    PS:C语言把0作为false,非0为true。

    所以才常见下面这种判断

    如果a为变量

    if(a)就是if(a!=0)
    if(!a)就是if(a==0)

    如果P为指针

    if(p)<==>if (p != NULL)

    if (!p)<==>if (p == NULL)/*判断空指针*/

    尤其在linux的代码中有很多这样的判断(采用前面的方法),如driver的probe函数的出错处理,而且linux中一般函数正确的返回值是0,错误返回值为负数,如下面的判断:

     ret = platform_device_register(&this_device);
       if (ret)/注册失败/
             platform_driver_unregister(&this_driver);

    直接写变量的好处是,
    1)节省存储空间,不需另外分配空间。
    2)运算速度加快,只需与零值比较。

    原文地址:C语言的布尔类型(_Bool)

    展开全文
  • 表示真假的bool类型

    2021-04-19 23:19:23
    使用方式: 在C++中,bool(布尔)类型有两种表示方式(表示逻辑) 直接使用bool类型 bool x = true; bool类型只有两个值,true(真)和false(假)。 使用0和非0的任何值(C语言风格) 0: 表示假 非0: 表示真 例子: 1 ...

    表示真假的bool类型

    上节我们讲了C语言字符串相关的类容。C语言字符串的储存、初始化、输出与输入

    本节我们介绍bool类型的变量。

    • 使用方式: 在C++中,bool(布尔)类型有两种表示方式(表示逻辑)

      • 直接使用bool类型
        bool x = true;

        bool类型只有两个值,true(真)和false(假)。

      • 使用0和非0的任何值(C语言风格)
        0: 表示假
        非0: 表示真

    • 例子:
      1 > 3 是假, 结果为false
      1 == 1 是真, 结果为true
      3 也为 true, 0为false
      3 > 1 是真,结果为true
      3 > 2 && 2 > 1(逻辑与)都成立时,才为真

    • 比如,你喜欢吃鱼,但你对别人说 我不喜欢吃鱼 == 假

    • 使用场合:
      if语句
      for语句
      while语句

    展开全文
  • C语言的布尔类型

    2018-07-21 17:58:07
    C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法: //定义一个int类型变量,当变量值为0时表示false,值为1时表示true
    原文地址为:C语言的布尔类型

      在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法:

    //定义一个int类型变量,当变量值为0时表示false,值为1时表示true
    int flag;
    flag = 0;
    //......
    flag = 1;

    if( flag )
    {
    //......
    }

      

      但这种做法不直观,而且没有明确flag一定是布尔值。所以我们又借助C语言的宏定义:

    //宏定义布尔类型
    #define BOOL int
    #define TRUE 1
    #define FALSE 0

    //定义一个布尔变量
    BOOL flag = FALSE;

     

      这种方法虽然直观,但依然是换汤不换药,变量flag在编译器看来依然是int类型。

      新版本总会改进一些不好的地方,所以在最新的C语言标准(C99)解决了布尔类型的问题。C99提供了_Bool 型,所以布尔类型可以声明为 _Bool flag。

      _Bool依然仍是整数类型,但与一般整型不同的是,_Bool变量只能赋值为0或1,非0的值都会被存储为1。

      C99还提供了一个头文件 <stdbool.h> 定义了bool代表_Bool,true代表1,false代表0。只要导入 stdbool.h ,就能非常方便的操作布尔类型了。

    //导入 stdbool.h 来使用布尔类型
    #include <stdbool.h>
    #include <stdio.h>

    //计算n!,n的值在main中定义
    int main(void)
    {
    int n = 10; //计算叠乘数
    int sum = 1; //用来存放叠乘的结果
    bool flag = false; //叠乘标记

    int num = n; //循环次数
    while( !flag )
    {
    sum = sum * (num--);
    //当num=1时结束循环
    if( num == 1)
    {
    flag = true;
    }
    }
    printf ("%d的叠乘值为 %d \n", n, sum);
    return 0;
    }





    转载请注明本文地址:C语言的布尔类型
    展开全文
  • C语言布尔变量

    千次阅读 2013-03-23 08:59:54
     在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法: //定义一个int类型变量,当变量值为0时表示false,值为1时表示true int flag; flag = 0; //.......

    转自:http://www.cnblogs.com/pharen/archive/2012/02/06/2340257.html

     在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法:

    复制代码
    //定义一个int类型变量,当变量值为0时表示false,值为1时表示true
    int flag;
    flag = 0;
    //......
    flag = 1;
    
    if( flag )
    {
    //......
    }
    复制代码

      

      但这种做法不直观,而且没有明确flag一定是布尔值。所以我们又借助C语言的宏定义:

    复制代码
    //宏定义布尔类型
    #define BOOL int
    #define TRUE 1
    #define FALSE 0
    
    //定义一个布尔变量
    BOOL flag = FALSE;
    复制代码

     

      这种方法虽然直观,但依然是换汤不换药,变量flag在编译器看来依然是int类型。

      新版本总会改进一些不好的地方,所以在最新的C语言标准(C99)解决了布尔类型的问题。C99提供了_Bool 型,所以布尔类型可以声明为 _Bool flag。

      _Bool依然仍是整数类型,但与一般整型不同的是,_Bool变量只能赋值为0或1,非0的值都会被存储为1。

      C99还提供了一个头文件 <stdbool.h> 定义了bool代表_Bool,true代表1,false代表0。只要导入 stdbool.h ,就能非常方便的操作布尔类型了。

    复制代码
    //导入 stdbool.h 来使用布尔类型
    #include <stdbool.h>
    #include <stdio.h>
    
    //计算n!,n的值在main中定义
    int main(void)
    {
        int n = 10;    //计算叠乘数
        int sum = 1; //用来存放叠乘的结果
        bool flag = false;    //叠乘标记
        
        int num = n;    //循环次数
        while( !flag )
        {
            sum = sum * (num--);
            //当num=1时结束循环
            if( num == 1)
            {
                flag = true;
            }
        }
        printf ("%d的叠乘值为 %d \n", n, sum);
        return 0;
    }
    复制代码

    展开全文
  • C语言与C++的比较

    2018-08-09 22:40:11
    (2)C++中有表示逻辑真假的布尔类型bool,可取值为true和false; (3)真正的枚举,C++中的枚举变量只能用被枚举出来的元素初始化,C语言中枚举的本质是整型,枚举变量可以用任意整型赋值; (4)表达式的值可以...
  • C语言中的布尔值

    2019-09-29 16:21:11
     在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法: //定义一个int类型变量,当变量值为0时表示false,值为1时表示trueint flag;flag = 0;//.........
  • c语言lesson03

    2014-06-28 19:47:08
    BOOL数据类型,是一种表示非真即假的数据类型,布尔类型的变量只有YES和NO两个值.YES表示表达式结果为真,NO表示表达式结果为假. 在c语言中,认为非0即为真. 关系运算符 > >= 主要用于比较运算,返回的结果只有真假...
  • C语言的布尔类型bool

    2016-10-10 04:54:36
     在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法: //定义一个int类型变量,当变量值为0时表示false,值为1时表示true int flag; flag = 0; //.......
  • C语言的布尔类型(_Bool)

    千次阅读 2013-07-03 09:56:15
     在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为...
  • c语言中的布尔类型

    2016-01-03 14:10:10
    C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法: //定义一个int类型变量,当变量值为0时表示false,值为1时表示true int flag; flag = 0; //.........
  • 逻辑取反得到的结果是表示真假(1/0) - 负值 - -num; //负负得正,注意与--num的区别 + 正值 & 取地址 sizeof 操作数的类型长度(以字节为单位) 来看一段代码 #unclude <stdio.h> #include <...
  • 1、c++对c语言的扩展

    2018-03-20 16:53:00
    1.类型增强 检查更加严格 比如,把一个 const 类型的指针赋给非 const 类型的指针。c 语言中可以通的过,但是在 c++中则编不过去 ...const int a = 100;...c语言中使用0和!0来表示逻辑真假,但是在c+...
  • C语言之位操作

    2018-05-18 23:53:30
    逻辑操作只有真假,位操作只有0和1。 运算符如下: 二,数据的二进制表示 1,八位二进制的补码 2,二进制打印 功能:显示二进制补码 三,位操作 1)位于(&amp;amp;amp;amp;amp;amp;amp;amp;amp;...
  • 第4章 选择结构程序设计 习题P111 4.2 C语言中如何表示真和假系统如何判断一个量的真和假 答C语言中用1表示真0表示假系统按照非0为真0为假判断一个逻辑量的真假 4.3 写出下面各逻辑表达式的值设a=3,b=4,c=5 1a+b>c&b...
  • c语言基础知识2

    2020-11-10 09:50:05
    /* 运算符与表达式 算数运算符:包括+、-、*、/、求余、取模(%),自增(++)、自减(--) 四则运算再进行输出的时候一定要... 逻辑运算符:返回的结果也是真假两种情况,包括与(&&),或(||),非(!
  • C语言中的真、假

    千次阅读 2010-09-05 22:30:00
    1、逻辑表达式、关系表达式的逻辑值: 1表示真 0表示假 2、判断变量是否为真假: 非0表示真 0表示
  • 第 4 章 选择结构程序设计 习题 P111 4.2 C 语言中如何表示真和假系统如何判断一个量的真和假 答 C 语言中用 1 表示真 0 表示假系统按照 非 0 为真 0 为假 判断一个逻辑量的真假 4.3 写出下面各逻辑表达式的值设 a=3...
  • 第 4 章 选择结构程序设计 习题 P111 C 语言中如何表示真和假系统如何判断一个量的真和假 答C 语言中用 1 表示真 0 表示假系统按照 非 0 为真 0 为假 判断一个逻辑量的真假 写出下面各逻辑表达式的值设 a=3,b=4,c=5 ...
  • 23_ C编程预备计算机专业知识 _ 常量在C语言中是如何表示的 22_ C编程预备计算机专业知识 _ 什么叫进制 21_ C编程预备计算机专业知识 _ 如何定义变量 20_ C编程预备计算机专业知识 _ 变量为什么必须的初始化【重点】...
  • c语言中对真假的处理是: 非零是真,用1表示; 零是假,用0表示; 表达式1 && 表达式2; 当表达式1 和 表达式2 都正确是 才输出1; 若是表达式1 或 2 有一个是假的,就输出0; 先来看两个小程序 #include int ...
  • 1、shell比较运算 ...在shell中,0表示为真,非0值为假,和C语言中相反 下面使用test指令来示例说明: [root@localhost ~]# test 1 -eq 1; echo $? #test指令用于测试一个表达式的真假,通过返回值返回,$?查看
  • 第一章 C++对C的扩展-1

    2020-12-09 00:55:01
    一.类型增强 1.1类型更严格 const类型的指针赋值给非const类型的指针。C可以编译通过,但是在C++编译不过去。 ... C语言逻辑真假用0和非0来表示。而C++有了具体的类型。 int main() { b...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

c语言表示逻辑真假

c语言 订阅