怎么把一个bool数组转成char?
生活随笔
收集整理的這篇文章主要介紹了
怎么把一个bool数组转成char?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這個是在知乎上看到的問題,分享給大家,如果有不同的答案,歡迎評論回復(fù)。
知乎慣例
謝邀
人在廁所,剛剛蹲下
因?yàn)樽罱剂餍虚L文,但是作為日更而且更喜歡表達(dá)自己看法的我,力爭文章是自己想發(fā)的,而且是有點(diǎn)作用的。
#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); }?輸出
輸出你可能認(rèn)為的答案
#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 我們默認(rèn)的最小存儲單元是 8bit,一個char字節(jié)。所以你要控制每一個bit是需要點(diǎn)技巧的。
這樣的用法在單片機(jī)里面非常多,不知道你們寫程序的時候有沒有用到標(biāo)志位,我們寫標(biāo)志位的時候,是用bool變量,但是實(shí)際上bool變量在占用的是一個字節(jié)的。
有了這樣的問題,我們就需要想出一個解決辦法,用一個bit來做判斷,按照我上面的寫法,占用的內(nèi)存直接降低幾個等級。
推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
嵌入式Linux
微信掃描二維碼,關(guān)注我的公眾號
總結(jié)
以上是生活随笔為你收集整理的怎么把一个bool数组转成char?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于AD9371FilterWizard
- 下一篇: 一个从华为离职的朋友