C结构,具有不同位大小的变量

C结构,具有不同位大小的变量,c,struct,bit,C,Struct,Bit,我不知道如何在C中创建一个变量具有不同位大小的结构,例如: 我想创建一个结构,其中一个变量为8位整数,一个变量为16位布尔值,一个变量为8位布尔值,一个变量为32位浮点数,等等 我来自java,所以所有这些都非常混乱,谢谢。也许这个小示例可以回答您的问题: #include <stdint.h> #include <stdbool.h> #include <stdio.h> struct { uint8_t my_int_8; int16_

我不知道如何在C中创建一个变量具有不同位大小的结构,例如:

我想创建一个结构,其中一个变量为8位整数,一个变量为16位布尔值,一个变量为8位布尔值,一个变量为32位浮点数,等等


我来自java,所以所有这些都非常混乱,谢谢。

也许这个小示例可以回答您的问题:

#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>


struct {
    uint8_t my_int_8;
    int16_t my_bool_16;
    bool    my_bool_8;
    float   my_float;
} test;

int main(const int argc, const char* argv[]) {
    printf("sizeof(my_int_8)=%zu\n", sizeof(test.my_int_8));
    printf("sizeof(my_bool_16)=%zu\n", sizeof(test.my_bool_16));
    printf("sizeof(my_bool_8)=%zu\n", sizeof(test.my_bool_8));
    printf("sizeof(my_float)=%zu\n", sizeof(test.my_float));
}
#包括
#包括
#包括
结构{
uint8_t my_int_8;
在我的书中;
bool my_bool_8;
浮起我的浮起;
}试验;
int main(常量int argc,常量char*argv[]){
printf(“sizeof(my_int_8)=%zu\n”,sizeof(test.my_int_8));
printf(“sizeof(my_bool_16)=%zu\n”,sizeof(test.my_bool_16));
printf(“sizeof(my_bool_8)=%zu\n”,sizeof(test.my_bool_8));
printf(“sizeof(my_float)=%zu\n”,sizeof(test.my_float));
}

这取决于编译器和平台。对于8位整数,也许可以使用“int8\u t”类型。对于32位浮点-“float”,但您必须阅读编译器的文档。

\include
#include <stdio.h>
#include<stdbool.h>
struct{
    float d; // By default 32 bits are initialized
    unsigned int a: 8;
    bool my_bool_8;
    bool my_bool_16; 
}nibble;

int main()
{
    printf("Size of structure is %lu\n", sizeof(nibble));
    printf("Size of my_bool_8 is %zu\n", sizeof(nibble.my_bool_8));
    return 0;
}
#包括 结构{ float d;//默认情况下初始化32位 无符号整数a:8; bool my_bool_8; bool my_bool_16; }轻咬; int main() { printf(“结构的大小为%lu\n”,大小为(半字节)); printf(“my_bool_8的大小为%zu\n”,sizeof(nibble.my_bool_8)); 返回0; }
16位布尔值在Java中是什么样子的?您是在询问位字段还是固定宽度整数类型?有特定大小的用例是什么?@Inrin university非常有用,谢谢。是否有一个页面可以让我看到我可以使用的所有不同长度?
sizeof
生成的是
size\u t
,而不是
int