#include <stdint.h>
#include <stdio.h>
typedef union {
uint64_t u[2];
struct {
uint64_t a:30;
uint64_t b:30;
uint64_t c:30;
uint64_t d:30;
uint64_t e:8;
}x;
} mystruct;
int main()
{
printf("Size %d\n", sizeof(mystruct));
}
我想在64位機器上編譯它。預期的輸出是16,但我越來越24. 我知道一些對齊發生在這裏,但我不知道爲什麼,因爲結構x是正好16個字節。 有人可以解釋這一點。 感謝sizeof沒有顯示預期的輸出
您正在使用位字段:K&R第150頁:*」幾乎所有關於位域的東西都是依賴於實現的「*」。我個人會忽略「幾乎」。 – cdarke
@cd他們說*幾乎*因爲其餘未指定;) – ouah