C C int數與多列舉值互轉的實現

2022-09-24 17:18:17 字數 1340 閱讀 7469

在c/c++在c/c++的開發中經常會遇到各種資料型別互轉的情況,正常的互轉有:單個列舉轉int數,int數轉float數,float數轉double數等。但是我們有時也會遇到多個列舉值與數字互轉的情形(例如多個演算法型別列舉開啟標誌轉成數字,這個數字來表示多個標誌位,按位來表示)。這樣乙個數字就能表示很多個標誌位了,針對記憶體較少的嵌入式裝置,這麼操作可以達到節約記憶體消耗,提高程式執行效率的目的。

demo核心知識點:通過位運算子(布林位運算子:"~"、"&"、"|";移位運算子:"<

code:

#include

using namespace std;

www.cppcns.com

int nflag = 0; //用移位表示各個列舉的開關

typedef enum

emtypenum;

void int2enum (int n)

else

cout << "nflag:" << nflag hkigaat; endl;

}int main()

for(i = 0; i < typenum;i++)

return 0;

}nflag:1

typea is on

typeb is off

typec is off

t程式設計客棧yped is off

nflag:3

typea is on

typeb is on

typec is off

typed is off

nflag:7

typea is on

typeb is owww.cppcns.comn

typec is on

typed is off

nflag:15

typea is on

typeb is on

typec is on

typed is on

nflag:14

typea is off

typeb is on

typec is on

typed is on

nflag:12

typea is off

typeb is off

typec is on

typed is on

nflag:8

typea is off

typeb is off

typec is off

typed is on

nflag:0

typea is off

typeb is off

typec is off

typed is off

C 列舉 字串 值的相互轉換

using system class program static void main string args 假設有列舉值如下 public enum dbprovidertype 1 將列舉轉換為字串 string strdbtype dbprovidertype.sqlserver.tostr...

機械人 四元數 與 尤拉角 的相互轉換

機械人 四元數 與 尤拉角 的相互轉換 flyfish 先看說明 constructs and initializes the quaternion w xi yj zk from its four coefficients w,x,y and z.warning note the order of...

Unity 四元數與尤拉角的相互轉換及推導

一 四元數與尤拉角的轉換 先說結論 具體推到過程參考 將尤拉角轉換為四元數 public quaternion eulartoquaternion float xx,float yy,float zz 二 關於rotation localrotation eulerangles localeuler...