微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中用uint8_t表示布尔

如何解决在C中用uint8_t表示布尔

我是C语言的新手,试图理解我遇到的以下结构。

typedef struct {
    char struct1_name[32];
    uint8_t is_initialized:1
} struct1_s;

我认为这里使用的不是布尔值“ uint8_t is_initialized:1”。只想知道“:1”是什么意思?这有什么意义?我确定会在某个地方回答此问题,但不确定如何搜索,因此描述上述内容的任何链接/示例都很棒

解决方法

:1是指定类型的显式大小(以位为单位)。

示例

所以在这种情况下,您有一个只有1位的unsigned int,这基本上就是我们所知道的布尔值

如果它是:3,那么它将有3个位,您可以在其中存储最多7个“值”,但它是:1只能存储0/1

它使您可以缩小类型。例如。可以使具有4个uint的结构适合单个字节


IIRC仅适用于基于整数的类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。