我不确定如何用C的变量大小不同的变量来创建Struct,例如:
我想创建一个结构,其中一个变量为8位整数,一个变量为16位布尔值,一个变量为8位布尔值,一个变量为32位浮点数,等等。
我来自Java,所以这一切都很令人困惑,谢谢。
答案 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”,但是您必须阅读编译器的文档。