zoukankan      html  css  js  c++  java
  • 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, sum);
    return 0;
    }
    Fist day
  • 相关阅读:
    SQLite-SQLiteDatabase 数据库实例练习
    全局配置一个ajax的错误监控
    文件上传&&验证文件格式
    CSS3 resize 属性
    select change()
    window.location.Reload()和window.location.href 区别
    条件检索
    jQuery $.ajax传递数组的traditional参数传递必须true 对象的序列化
    jquery中attr方法和prop方法的区别
    resize
  • 原文地址:https://www.cnblogs.com/NULL-ROOT/p/10363862.html
Copyright © 2011-2022 走看看