[英]Is there a way to initialize a char using bits?
我試圖代表一副撲克牌中的52張牌。 我需要總共6位; 2為西裝,4為排名。 我以為我會使用char並且前兩位為零,因為我不需要它們。 問題是我不知道是否有辦法使用位初始化char。
例如,我想做的是:
char aceOfSpades = 00000000;
char queenOfHearts = 00011101;
我知道一旦我初始化了char,我可以操作這些位,但如果我可以從頭開始初始化它會更容易,如我的例子所示。 提前致謝!
是的你可以:
例,
char aceOfSpades = 0b00000000;
char queenOfHearts = 0b00011101;
正如Captain Oblivious在評論中所說的那樣,更簡單的方法就是使用一點點字段
struct SixBits
{
unsigned int suit : 2;
unsigned int rank : 4;
};
int main()
{
struct SixBits card;
card.suit = 0; /* You need to specify what the values mean */
card.rank = 10;
}
你可以嘗試在char
上使用各種bit fiddling操作,但這更難以使用。 還有一個潛在的問題是,無論char
是有signed
還是unsigned
,它都是實現定義的 - 如果有signed
,bitfiddling操作在某些情況下會給出未定義的行為(例如,如果在負值下運行)。
就個人而言,我不打算嘗試將所有東西都裝入char
。 我將使代碼易於理解(例如,使用枚舉來表示sut, int
來表示排名),除非有明顯的需求(例如,試圖讓程序在內存極其有限的機器上工作 - 這在實踐中不太可能硬件不到20年)。 否則,你真正實現的只是代碼難以維護,幾乎沒有現實世界的優勢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.