iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中bool变量的深入理解
  • 831
分享到

C语言中bool变量的深入理解

2024-04-02 19:04:59 831人浏览 八月长安
摘要

目录前言bool类型变量的大小bool 值与0比较C语言中bool如何输出总结前言 在一些高级语言当中,为了能够完成更好的逻辑判断,因此就有了bool类型,bool类型的变量值只有t

前言

在一些高级语言当中,为了能够完成更好的逻辑判断,因此就有了bool类型,bool类型的变量值只有true和false两种。

而在C语言中,一般认为0为假,非0为真。

这是因为c99之前,c90是没有bool类型的的。但是c99引入了_Bool类型(_Bool就是一个类型,不过在新增头文件stdbool.h中,被重新用宏写成了 bool,为了保证C/C++兼容性)。

目前为止大部分C语言书籍采用的标准还是c90标准,因此我们很少用bool类型。

bool类型变量的大小

可以看到,这里的bool类型的大小和我们平时的真或假的大小是不一样的。

下面是bool类型的源码

可见,stdbool.h中定义了4个宏,bool、true、false、__bool_true_false_are_defined。 其中bool就是 _Bool类型,true和false的值为1和0,__bool_true_false_are_defined的值为1。
注意这里的bool类型和char类型虽然都是1字节,但是它们是不同的:char 中存储字符,全局变量初始值为'\0',bool 中存0或1,全局变量默认初始化为0。

C语言中的逻辑表达式的返回结果,比如 a==b的返回结果,只有0和1两种可能,但是它们的大小确是4,也就是用整形表示真假:

另外,在VS2013中,微软还给我们设计了大写的BOOL类型,这个类型在VS2019中就被删除了,BOOL类型将int进行了重命名,因此它的大小是4个字节。不推荐这种类型,因为这是微软的标准,如果换到其他编译环境则无法使用。

bool 值与0比较

对于if条件的表达式,一般有以下三种写法:


#include <stdio.h> 
int main()
{
	int pass = 0; //0表示假,C90,我们习惯用int表示bool 
	if (pass == 0)
	{ 
		//理论上可行,但此时的pass是应该被当做bool看待的,
		//这里与整形数字0比较,这种表示方法在语义上并不直观,不推荐 
	}
	if (pass == false)
	{ 
		//不推荐,因为只能在C99中使用
	}
	if (pass)
	{ 
		//推荐 

	}
	return 0;
}

之所以推荐使用第三种,因为if语句在开始使用时先要进行条件判定,而判定的正是括号()中表达式或函数的逻辑结果,这个逻辑结果只有真或假。

在这里pass并没有进行任何条件判定,所以pass本身就是逻辑结果,这样就能反应出来flag是真或者假,这里pass的值是0表示假,如果想要其表示真只需要加逻辑反!即可:!pass

如果要采用bool类型:


#include <stdio.h> 
#include <stdbool.h>
int main()
{
    bool pass = false; //C99
	if (pass != 1)
	{ 
		//与整形数字0比较,这种表示方法在语义上并不直观,不推荐 
		//另外,非0为真,但是非0有多个,这里也不一定是完全正确的
	}
	if (pass != true)
	{ 
		//不推荐,这样写虽然没有问题,但是并不直观
	}
	if (!pass)
	{ 
		//推荐,pass本身表示假,取反表示真

	}
	return 0;
}

结论:bool类型,直接判定,不用操作符进行和特定值的比较。

c语言中bool如何输出

c中的bool型就是0和1,因此可以用%d输出,因此。。。代码如下:


#include <stdio.h>

void main()
{
bool b = true;
printf("%d\n",b);

bool c = false;
printf("%d\n",c);
}


总结

到此这篇关于C语言中bool变量的文章就介绍到这了,更多相关C语言bool变量内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言中bool变量的深入理解

本文链接: https://www.lsjlt.com/news/133678.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中bool变量的深入理解
    目录前言bool类型变量的大小bool 值与0比较c语言中bool如何输出总结前言 在一些高级语言当中,为了能够完成更好的逻辑判断,因此就有了bool类型,bool类型的变量值只有t...
    99+
    2024-04-02
  • C语言由浅入深了解变量的应用
    目录1. 变量的存储类别内存虚拟内存分区(运行程序时进行分区) 2. 全局变量普通的全局变量静态全局变量3. 局部变量普通局部变量静态局部变量4. const不可赋值变量5...
    99+
    2024-04-02
  • 深入了解Go语言中的变量概念
    Go语言是一种开发效率高、性能优越的现代编程语言,在Go语言中,变量是一个非常重要的概念。本文将深入探讨Go语言中的变量概念,通过具体的代码示例来帮助读者更好地理解和掌握变量的使用。 ...
    99+
    2024-04-02
  • 深入了解go语言的关键变量
    在 go 语言中,变量是重要的数据存储容器。基本数据类型包括布尔型、整数型、浮点型、複数字和字符串型。通过 var 关键字声明变量,并可通过短变量声明在局部范围内使用。掌握关键变量的用法...
    99+
    2024-04-08
    go语言 关键变量
  • R语言变量赋值深入讲解
    变量可以使用向左,向右且等于操作符来分配值。可以使用 print() 或 cat() 函数打印变量的值。cat() 函数将多个项目并成连续并打印输出。 # Assignment ...
    99+
    2024-04-02
  • 深入理解C语言的指针
    目录起源进程内存布局栈设置分配方式特点堆分配方式特点堆与栈区别扩展总结起源 之前在知乎上看了一句话,指针是C的精髓,也是初学者的一个坎。换句话说,内存管理是C的精髓,C/C++可以直...
    99+
    2024-04-02
  • c语言中bool的用法
    c语言中bool类型表示真/假,值为1(真)或0(假)。可使用bool is_true = true;声明和初始化布尔变量,也可使用true/false关键字。bool变量可使用逻辑非、...
    99+
    2024-05-09
    c语言 隐式转换
  • 深入理解C语言的new[]和delete[]
    目录1、重载操作符2、new和delete的原理3、new[]和delete[]的原理总结c++的动态内存管理方式和c语言不一样,在c++中使用new和delete来替换c语言中的m...
    99+
    2024-04-02
  • c语言深入理解函数的递归
    前言:  首先,递归是什么,递归就是在定义函数时,然后在函数里调用这个函数,通俗讲,就是函数自己调用自己。那么递归的好处是什么呢?它能够将复杂的问题,用少量的代码来表示,增加了代码的...
    99+
    2024-04-02
  • C语言取模取整的深入理解
    目录一:四大取整  1.1、 0向取整1.2、  -∞取整( 地板取整)1.3、 +∞取整1.4、 四舍五入取整1.5、 例子汇总二:取模...
    99+
    2024-04-02
  • 怎样深入理解C语言的指针
    本篇文章给大家分享的是有关怎样深入理解C语言的指针,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。起源之前在知乎上看了一句话,指针是C的精髓,也是初学者的一个坎。换句话说,内存管...
    99+
    2023-06-26
  • bool在c语言中的意思
    bool在c语言中表示布尔值,即真或假。作为一种基本数据类型,bool变量可存储布尔值,并使用&&、||和!等运算符进行逻辑运算,广泛应用于条件语句、关系表达式和逻辑运算...
    99+
    2024-05-09
    c语言
  • c语言中bool函数的用法
    c 语言中,bool 函数是一种布尔函数,返回 true 或 false 值。其语法为:bool 函数名(参数列表),可接受任意数据类型参数,根据参数值计算条件,返回 true(真)或 ...
    99+
    2024-05-09
    c语言
  • C语言由浅入深理解指针
    目录1. 相关概念2. 指针的定义方法3. 指针的分类4. 指针和变量的关系5. 指针与数组的关系6. 指针的运算1. 相关概念 操作系统给每个存储单元分配了一个编号,从ox00 0...
    99+
    2024-04-02
  • 怎么深入理解Python中的ThreadLocal变量
    怎么深入理解Python中的ThreadLocal变量,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在上篇我们看到了 ThreadLocal ...
    99+
    2024-04-02
  • c/c++中变量的声明和定义深入解析
    不管是函数还是变量的声明 ,都是为了告诉编译器我要使用这个变量或者函数了,用于类型检查。在定义 的时候编译器是不会分配任何内存的, 比如下面的函数:复制代码 代码如下:void fu...
    99+
    2022-11-15
    变量 c++ c
  • 深入理解C语言中*和&的不同功能
    指针()指向变量内存地址,而地址运算符(&)获取变量地址。指针使用运算符解除引用以访问值,而地址运算符返回指向变量位置的指针。这些运算符用于动态内存分配、链表和数组操作。 深入...
    99+
    2024-04-03
    c语言 * &amp;amp;
  • 深入了解Python中的变量
    目录1 Python变量概述2 Python变量的命名3 Python变量赋值3.1 Python赋值概述3.2 Python变量的基本格式3.3 Python变量的其他赋值格式3....
    99+
    2024-04-02
  • 深入理解JavaScript 变量对象
    目录前言变量对象全局上下文中变量对象函数上下文中的变量对象执行过程预编译代码执行总结练习题前言 在上节《深入 JavaScript 执行上下文栈——Web 前...
    99+
    2024-04-02
  • 深入探讨Go语言中切片和变量的异同
    切片和变量在go中都引用底层数组,共享内存。切片具有长度和可扩展容量,而变量具有固定长度。切片使用指针语义,变量使用值语义。通过根据需求选择切片或变量,可以编写更灵活高效的go程序。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作