在C语言中使用int定义类似高级语言中的bool类型变量的原因

学习过高级语言的朋友都知道,高级语言中有一种类型叫bool类型,但是在C语言中并没有bool类型,而C++里面却是有bool类型的,有关于bool类型的描述我这里不阐述,网上资源很丰富,这里主要记录如下:

1、首先得知道C99标准里面是定义了bool类型变量的,只需要在开始声明定义stdbool.h头文件即可在C语言中使用bool类型变量,而这里要说明的是在做C51单片机开发时keil中没有stdbool.h这个头文件,所以还是没法用,但是在gcc或者linux下的sdcc编译工具链中这个方法是可行的。

2、很多初学者不知道为什么要使用bool类型的变量,这里简单做个解释,bool类型好比一个标记(这也是为什么在C语言中好多人使用flag这个单词来表示bool类型),类似于单片机上面的标志位(PSW),一般用来记录一件事做了还是没做,成功还是失败等等这种对立事件,一般与if条件判断语句所绑定使用,然后确定要做哪件事。

3、现在来说本文讨论的重点问题,要在C语言中实现bool类型很容易,做法特别多,其中用的最多的就是使用int来定义一个变量然后使其的值为1或者0(1和0就是bool类型的值),那么做单片机的时候使用一个位就可以达到1和0的记录,在其它地方也可以使用char类型来做,为什么要用到int类型来定义,这样不是很浪费内存吗,答案是这样确实浪费内存,一个bit只占用一位,char类型占用一个字节,也就是8位,而int在51单片机中占用两个字节(16位)其他地方甚至占用4个字节(32位),但是大家还是用的是int,而不是bit或者char(这里指的是大多数人),不是说不可以,完全可以,但是有一定的缺陷:

上一篇文章说过,整型(int)占用的字节数与硬件(主要指CPU)有一定的关系,大量使用整型可以使得CPU的运行速度达到更快(这里面的原因和硬件的工作有关,内容很多,一句话说不清楚,只需要记住这点就可以了),在很久以前由于内存比较小,比较贵,所以大家写的代码应该是越小越好,当时如果大量使用int类型会导致内存不够用,不得已只能采用降低运行速度来保证内存的占用(尽可能不用int),而现在对于大部分机子来说内存很大,不在乎这一点占用,而相反的,现在人们追求的是CPU的运行速度,所以大量的使用int可以使得CPU运行速率达到最佳,这就是为什么大家为了使用一个位而定义一个int来操作的原因。

当然这些都是我个人的理解,如果有什么不对的地方,欢迎讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值