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

时间:2018-08-19 11:16:03

标签: c struct bit

我不确定如何用C的变量大小不同的变量来创建Struct,例如:

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

我来自Java,所以这一切都很令人困惑,谢谢。

3 个答案:

答案 0 :(得分:1)

#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;
}

答案 1 :(得分:0)

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

#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));
}

答案 2 :(得分:0)

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