日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么把一个bool数组转成char?

發(fā)布時間:2023/12/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么把一个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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。