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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【⭐C/C++の深入浅出⭐】int数与多枚举值互转

發布時間:2025/3/15 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【⭐C/C++の深入浅出⭐】int数与多枚举值互转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

int數與多枚舉值互轉

在C/C++在C/C++的開發中經常會遇到各種數據類型互轉的情況,正常的互轉有:單個枚舉轉int數,int數轉float數,float數轉double數等。但是我們有時也會遇到多個枚舉值與數字互轉的情形(例如多個算法類型枚舉開啟標志轉成數字,這個數字來表示多個標志位,按位來表示)。這樣一個數字就能表示很多個標志位了,針對內存較少的嵌入式設備,這么操作可以達到節約內存消耗,提高程序運行效率的目的。

Demo示例

demo核心知識點:通過位運算符(布爾位運算符:"~"、"&"、"|";移位運算符:"<<")實現int數與多枚舉值互轉。
Code:

#include <iostream>using namespace std;int nFlag = 0; //用移位表示各個枚舉的開關 typedef enum {TYPEA, //A開啟,則nflag為1=0x00000001TYPEB, //B開啟,則nflag為2=0x00000010TYPEC, //C開啟,則nflag為4=0x00000100TYPED, //D開啟,則nflag為8=0x00001000TYPENUM //枚舉最大值,計數用 }EMTypeNum;void int2enum (int n) {if(n&(0x01<<TYPEA)){//為真cout << "TYPEA is ON\n";}else{//為假cout << "TYPEA is OFF\n";}if(n&(0x01<<TYPEB)){//為真cout << "TYPEB is ON\n";}else{//為假cout << "TYPEB is OFF\n";}if(n&(0x01<<TYPEC)){//為真cout << "TYPEC is ON\n";}else{//為假cout << "TYPEC is OFF\n";}if(n&(0x01<<TYPED)){//為真cout << "TYPED is ON\n";}else{//為假cout << "TYPED is OFF\n";} } void enum2int(EMTypeNum eMType, bool bOn) {if(bOn){nFlag |= (0x01 << eMType);}else{nFlag &= ~(0x01 << eMType);}cout << "nFlag:" << nFlag << endl; }int main() {int i = 0;for(i = 0; i < TYPENUM;i++){enum2int((EMTypeNum)i, true);int2enum(nFlag);cout << endl;}for(i = 0; i < TYPENUM;i++){enum2int((EMTypeNum)i, false);int2enum(nFlag); cout << endl;}return 0; }

Result:

nFlag:1 TYPEA is ON TYPEB is OFF TYPEC is OFF TYPED is OFFnFlag:3 TYPEA is ON TYPEB is ON TYPEC is OFF TYPED is OFFnFlag:7 TYPEA is ON TYPEB is ON TYPEC is ON TYPED is OFFnFlag:15 TYPEA is ON TYPEB is ON TYPEC is ON TYPED is ONnFlag:14 TYPEA is OFF TYPEB is ON TYPEC is ON TYPED is ONnFlag:12 TYPEA is OFF TYPEB is OFF TYPEC is ON TYPED is ONnFlag:8 TYPEA is OFF TYPEB is OFF TYPEC is OFF TYPED is ONnFlag:0 TYPEA is OFF TYPEB is OFF TYPEC is OFF TYPED is OFF

結束寄語

有關int數與多枚舉值互轉的介紹就到此結束啦!下篇博文與各位再見面~

寫博不易,如蒙厚愛,賞個關注,一鍵三連~~點贊+評論+收藏🤞🤞🤞,感謝您的支持~~

總結

以上是生活随笔為你收集整理的【⭐C/C++の深入浅出⭐】int数与多枚举值互转的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。