在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仅适用于基于整数的类型。