网站域名在哪看,沈阳网页设计,小米路由器做网站服务器吗,5站合一 网站建设这个是在知乎上看到的问题#xff0c;分享给大家#xff0c;如果有不同的答案#xff0c;欢迎评论回复。知乎惯例谢邀人在厕所#xff0c;刚刚蹲下因为最近都流行长文#xff0c;但是作为日更而且更喜欢表达自己看法的我#xff0c;力争文章是自己想发的#xff0c;而且… 这个是在知乎上看到的问题分享给大家如果有不同的答案欢迎评论回复。知乎惯例谢邀人在厕所刚刚蹲下因为最近都流行长文但是作为日更而且更喜欢表达自己看法的我力争文章是自己想发的而且是有点作用的。#include stdio.h
#include stdbool.hstruct 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.hint 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微信扫描二维码关注我的公众号