首页 > 编程知识 正文

c语言bool类型函数,c语言布尔类型怎么输出

时间:2023-05-06 19:58:04 阅读:10836 作者:4786

我们知道c有表示是真的还是假的专用bool类型。 但是c语言没有那样的类型(至少我是这么想的)。 表达式的值为0是假,非0是真。 所以条件判断语句(if(…)、while(…) () ) () ) )非常灵活,即使只有一个指针类型也成为条件式。

为了使过程更清晰,我们经常给出以下宏观定义。

类型在球;

#定义真1

#define FALSE 0

这是最常见的写法,任何c语言编译器都允许。

今天,我在一个程序中看到了这样的行#include。 这个陌生的头文件在std上也走在前列,也和bool有关,引起了我的警惕,很快百度的。 我知道这是在C99标准中添加的头文件,其目的是引入bool类型以与c兼容。 然后,我查看了这个头文件的源代码。 内容如下。

/*

* ISOC标准:7.16 booleantypeandvalues

*/

#ifndef _STDBOOL_H

#define _STDBOOL_H

#ifndef __cplusplus

#define bool _Bool

#定义真1

#define false 0

#else /* __cplusplus */

/* supportingincisagccextension.* /

#define _Bool bool

#定义布尔布尔

#定义假假

#定义真

#endif /* __cplusplus */

/* signalthatallthedefinitionsarepresent.* /

# define _ _ bool _ true _ false _ are _ defined 1

#endif /* stdbool.h */

此头文件既短又清晰,但我对类型_Bool感兴趣。 再看百度,发现这是C99标准引入的新关键词。 是的,不是宏的定义而是关键字。 也不是特种兵。 sizeof(_bool ); 如果该类型占用一个字节,并且给该类型的变量一个除0以外的整数值,你知道该值是1,意味着他不是其他整数类型的别名。

那么,其实我只能说,c语言不是没有布尔型,而是在C99标准以前没有。 现在,如果在源文件中包含名为stdbool.h的头文件,则可以在c语言中使用bool类型,就像c一样。

所以如果是C99以前的标准,就需要自己定义bool。 例如

typedef enum {false=0,true=1} bool;

现在,让我们来看看c语言的定义。

1.FALSE/TRUE与false/true的区别: false/true是用标准c语言添加的新关键字,false/true通过#define。 这需要用途

解决了程序在c和c中的环境差异,以下是windef.h中对FALSE/TRUE的定义:

#ifndef FALSE

#define FALSE 0

#endif

#ifndef TRUE

#定义真1

#endif

也就是说,FALSE/TRUE是int类型,FALSE/TRUE是bool类型。 所以两者不同,只是

我们在使用中没有这种感觉。 因为c会给我们做隐式转换。

2.BOOL大小和BOOL的区别:因为BOOL在c中占用1个字节,但BOOL是int类型,int类型的大小因具体环境而异

对我来说,false/true只占用一个字节,但TRUE/FALSE根据具体环境的不同,以下在windef上有BOOL

. h中的定义: typedef int BOOL;

3 .空值与0的区别:还是看看windef.h中空值的定义吧:

#ifndef NULL

#ifdef __cplusplus//这指示用c编译程序

#定义空值0

#else

#定义空值((void * )0) ) )。

#endif

#endif

所以,它们没有区别。 但是,在c中进行强制的类型转换。

时间: 2015-11-15

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。