这个是在知乎上看到的问题,分享给大家,如果有不同的答案,欢迎评论回复。

知乎惯例

谢邀

人在厕所,刚刚蹲下

因为最近都流行长文,但是作为日更而且更喜欢表达自己看法的我,力争文章是自己想发的,而且是有点作用的。

#include "stdio.h"
#include "stdbool.h"struct boolStr{char bit0:1;char bit1:1;char bit2:1;char bit3:1;char bit4:1;char bit5:1;char bit6:1;char bit7:1;
};
int main(void)
{struct boolStr bitStr;char temp = 0;bitStr.bit0 = 1;bitStr.bit4 = 1;temp = *(char *)&bitStr;printf("size:%d %d\n",sizeof(bitStr),sizeof(temp));printf("temp:0x%x\n",temp);return (0);
}

输出

输出

你可能认为的答案

#include "stdio.h"
#include "stdbool.h"int main(void)
{bool barray[8];char temp = 0;printf("size:%d %d\n",sizeof(barray),sizeof(temp));printf("temp:0x%x\n",temp);return (0);
}

输出

输出

得出来的sizeof(8*bool) = 8 而不是 1 我们默认的最小存储单元是 8bit,一个char字节。所以你要控制每一个bit是需要点技巧的。

这样的用法在单片机里面非常多,不知道你们写程序的时候有没有用到标志位,我们写标志位的时候,是用bool变量,但是实际上bool变量在占用的是一个字节的。

有了这样的问题,我们就需要想出一个解决办法,用一个bit来做判断,按照我上面的写法,占用的内存直接降低几个等级。

推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言


嵌入式Linux

微信扫描二维码,关注我的公众号

怎么把一个bool数组转成char?相关推荐

  1. android 字节转wav,android开发:把一个byte数组转换成wav音频文件,并且播放

    ============问题描述============ 如题,byte数组转换成wav音频文件,并且播放,下面代码能生成data/data/com.example.playwav/cache/tem ...

  2. 把一个字符串数组转化成数字数组

    今天遇到了一个小问题,项目中一个功能是按特定数字键,进入到酒店模式. 但是发现拿到的按键键值是字符串的,我们判断的时候需要拿数字判断,导致二者永远判断不等. if (this.numVec[0].ke ...

  3. char数组转换成字符串_将字符串转换为char数组java –将字符串转换为char

    char数组转换成字符串 Sometimes we have to convert String to the character array in java programs or convert ...

  4. 怎么把char数组转换成String

    调用reverseStr()传入一个字符串"let's" public String reverseStr(String s) {int left = 0, right = s.l ...

  5. 如何把一个float存到一个长度为4的char数组中?

    我以前以为它是可以这样的 看代码 #include "stdio.h"int main(void) {float fa = 123.56;char farray[4] = {0}; ...

  6. 【c语言】定义一个指针数组,指向5个不同的char型数组

    最近在准备复试的上机考试,顺便帮大一小孩做C语言作业. 其中有一道题目是将五个单词排序后输出 想到了利用<string.h>库函数中的strcmp,但是逐一比较只能找到最大值或最小值,没有 ...

  7. 将16进制unsigned char数组转换成整数

    /** * 将unsigned char数组转换成long long数值* {0x00 0x00 0x20 0x00}转换之后得到8192* * @param str 数组 * @param len ...

  8. html数组拼接,多个数组合并成一个

    如何优雅的将多个数组合并成一个数组 import java.util.Arrays; //Java中如何把两个数组合并为一个 public class gog { public static void ...

  9. 如何把一个整数转化成数组_「leetcode891」给定一个整数数组 A,考虑 A 的所有非空子序列...

    给定一个整数数组 A ,考虑 A 的所有非空子序列. 对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差. 返回 A 的所有子序列的宽度之和. 由于答案可能非常大,请返回答案模 10^ ...

最新文章

  1. Enlightenment E19 将完整支持 Wayland
  2. 基于mysql 5.5+mysql-master-ha实现mysql ha架构
  3. 倒计时3天!携手开发者,一起精准打造数智未来!
  4. @AspectJ中的几种通知方式详解
  5. 【Python网络爬虫】规则#20181023
  6. resnet50代码_十余行代码完成迁移学习,百度PaddleHub实战解读
  7. EXT ajax简单实例
  8. 2017-10-19 NOIP模拟赛
  9. 安装索引源码阅读工具 lxr 安装配置初探
  10. java中实现下载音乐_如何用JAVA的IO流下载落网音乐?
  11. 乞讨网站,要饭网,个人要饭网,在线要饭网站;含socket 通信;双端支付源码 ;源码
  12. 数据挖掘实例1:亲和性分析示例(代码、注释、运行结果)
  13. 迪文屏学习系列之数据录入
  14. Xilinx HLS 学习笔记1
  15. MyGUI_Orge官网教程_5.窗口部件控制
  16. 英语语法基础06(长难句训练)
  17. linux手机版模拟电脑,在你的PC上体验Firefox OS 1.3 模拟器
  18. RS-一般推荐(CF系列)-2018:GCMC
  19. 江苏机器人竞赛南航_我校举办第十一届机器人大赛暨第十届江苏省大学生机器人大赛校内选拔赛...
  20. 树莓派搭载微雪电子墨水屏——过关斩将过程全记录!

热门文章

  1. 面试中关于Java你所需知道的的一切
  2. ShowDoc的搭建
  3. 二手房买卖砍价最新攻略 帮你花少钱买好房
  4. Oracle 制造死锁和查询死锁
  5. python标准库os中的方法_python中OS常用方法
  6. 高德地图轨迹回放_高德地图上线了一个新功能….
  7. 【机器学习】逻辑斯蒂回归概率计算和手动计算对比
  8. 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字
  9. 十字连接焊盘_你应该知道的焊盘基础知识
  10. 【uoj#207】共价大爷游长沙 随机化+LCT维护子树信息