[英]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.