c语言中有自己的bool类型

有人说c语言中没有bool类型,只有c++中有,果真如此?

先看没有bool类型时,c中表示bool类型的方法:

1、

typedef int bool;
#define false 0
#define true  1

2、

typedef int bool;
enum { false, true };

3、

typedef enum { false, true }bool;

简单实例如下:

#include <stdio.h>
//1
//typedef int bool;
//#define false 0
//#define true  1

//2
//typedef int bool;
//enum { false, true };

//3
typedef enum { false, true }bool;

#include <stdbool.h>

int main()
{
    bool m = true;
    bool n = false;

    printf("m=%d,n=%d\n", m, n);

    printf("sizeof(bool)=%zu\n", sizeof(bool));
    return 0;

}

从C99标准开始,类型名字为“_Bool”,如果你的编译器支持C99,就可以直接使用布尔类型。另外,C99为了让C和C++兼容,增加了一个头文件stdbool.h。里面定义了bool、true、false,让我们可以像C++一样的定义布尔类型。

_Bool类型不需要引用其他库函数,直接就可以使用,

bool类型,则需要 #include
<stdbool.h>,使用如上文

//4
//#include <stdbool.h>

int main()
{
    //bool m = true;
    //bool n = false;
    _Bool m = 1;
    _Bool n = 0;

    printf("m=%d,n=%d\n", m, n);

    printf("sizeof(bool)=%zu\n", sizeof(/*bool*/_Bool));
    return 0;

}

从上述代码中,可以看出,c99之后,c语言已经完美支持布尔类型了。

时间: 2024-10-02 23:40:38

c语言中有自己的bool类型的相关文章

一起talk C栗子吧(第一百六十八回:C语言实例--C语言中的布尔--bool类型)

各位看官们,大家好,上一回中咱们说的是控制终端字符颜色的例子,这一回咱们说的例子是:C语言中的布尔–bool类型 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,在数字电路中我们经常会遇到布尔类型,其实在编写软件的过程中也会使用布尔类型.布尔类型的变量只有两种值:真和假.在实际的编程过程中,我们经常定义宏,然后使用1表示真,0表示假.下面是具体的例子: #define TRUE 1 #define FALSE 0 例子中定义了两个宏,一个是TRUE,它的值是1,表示真:另外一个是F

Dart语言学习( 五) Dart Bool类型

Dart Bool类型和其他语言类似,比较简单 其特点有: 1.使用 bool 表示布尔类型 2.布尔值只有 true 和 false 3.布尔类型bool默认值是null bool isTrue = true; bool isFalse = false; bool defaultBool ; print(isTrue); print(isFalse); print(defaultBool); print("Hello".isEmpty); 输出如下: true false null

C语言中有bool类型吗?

之前一直都没有注意到,最近在用C语言写DSP算法时,偶然间发现我函数中定义的bool类型的变量在VC6.0(我主要用它来检查一下语法错误)中编译居然报错了,说是bool类型没有定义.用了这么久的C和C++了,一直觉得bool这种基本类型,应该是C语言内置的类型,怎么会没有定义呢?事实证明,我的想法完全错误了. 有了网络,一切问题都变得那么容易了,我很容易地搜到了相关的解答. C语言里面是没有bool(布尔)类型的,C++里面才有,这就是说,在C++里面使用bool类型是没有问题的.bool类型有

bool和BOOL类型知识集合

知识点一.C语言中有bool类型吗? 转自http://blog.csdn.net/liuqiqi677/article/details/6703615 之前一直都没有注意到,最近在用C语言写DSP算法时,偶然间发现我函数中定义的bool类型的变量在VC6.0(我主要用它来检查一下语法错误)中编译居然报错了,说是bool类型没有定义.用了这么久的C和C++了,一直觉得bool这种基本类型,应该是C语言内置的类型,怎么会没有定义呢?事实证明,我的想法完全错误了. 有了网络,一切问题都变得那么容易了

关于C语言中有string类型吗?

一.问题来源 今天在VS2010平台上,尝试采用scanf() string word; scanf("%s",&word); 然后发现错误,输出采用 printf("%s\t",word); 发现也不行,然后转换成cin和cout就OK,于是怀疑是不是%s出了问题,果然是这样. 因为在C中的字符串是存储在char数组中,是一个基本类型的组合,但是string则是C++中的封装好的类. 所以输出可以采用 printf("%s\t",wor

go语言基础之基础数据类型 bool类型

1.bool类型 示例1: package main import "fmt" func main() { var a bool a = true fmt.Println("a = ", a) } #执行结果 a = true 示例2: package main import "fmt" func main() { var b = false fmt.Println("b = ", b) } #执行结果 b = false 示

黑马程序员----OC中含有BOOL类型

一.BOOL类型 OC中有布尔类型 BOOL(C语言中没有布尔类型) 二.BOOL类型的本质 typedef signed char BOOL; 三.BOOL类型的取值范围 BOOL类型的变量又2种取值:YES .NO #define YES (BOOL)1 #define NO (BOOL)0 四.代码练习: 运行结果:

Go语言学习(四)经常使用类型介绍

1.布尔类型 var v1 bool v1 = true; v2 := (1==2) // v2也会被推导为bool类型 2.整型 类 型 长度(字节) 值 范 围 int8 1 ? 128 ~ 127 uint8(即byte)1 0 ~ 255 int16 2 ? 32 768 ~ 32 767 uint16 2 0 ~ 65 535 int32 4 ? 2 147 483 648 ~ 2 147 483 647 uint32 4 0 ~ 4 294 967 295 int64 8 ? 9 2

c++中istream类型到bool类型的隐式转换

事情的起因是见到了这种用法: while(cin>>m>>n&&m&&n) { } 现在分析一下,cin>>m>>n返回的是一个对istream类型的引用,然后这个返回值又与m做&&运算.已知这种写法是合法的. 可能有两种情况:(1)&&运算符被重载,允许接收istream类型的值. (2)istream类中有成员能将istream类型转换为bool类型. 翻看手册,发现是第二种情况.http: