Однозначная деятельность по выравниванию и заполнению элементов структуры - PullRequest
1 голос
/ 29 мая 2020

enter image description here

попробуйте ниже код в - https://onlinegdb.com/H1Sf_PAiI

#include<iostream>
using namespace std;

struct Str
{
    char c;
    int ch1:56;
    double d;
    int s;
    int ch:32;  
}st;
int main()
{
    cout<<sizeof st<<endl;

    return 0;
}

output

main.cpp:7:10: warning: width of ‘Str::ch1’ exceeds its type                                                                          
32

Затем я уменьшил битовое поле ch1 до 32 бит. Это сработало ..!

попробуйте ниже код при - https://onlinegdb.com/BkD4YP0oI

#include<iostream>
using namespace std;

struct Str
{
    char c;
    int ch1:32;
    double d;
    int s;
    int ch:32;  
}st;
int main()
{
    cout<<sizeof st<<endl;

    return 0;
}

вывод

24

Правило 1 и 2 на изображении выше неверно?

...