ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
903035 Топик полностью
ЫЫукпу (11.02.2019 11:40 - 12:14, просмотров: 192) ответил Codavr на Это из стандарта вынуто или народ уже в процессе юзания компилеров находит такие веселухи?
Это из INCITS/ISO/IEC 9899-2011[2012], раздел 6.7.2 Type specifiers, пункт 5. Проверил в IAR, поле .i таки считается беззнаковым :)
    struct{
        int i:4;
        unsigned int ui:4;
        signed int si:4;
        bool b:4;
    } s;
    s.i = -1;
    s.ui = 0x0f;
    s.si = -3;
    s.b = -1; // а в поле .b заносятся биты 0001
    printf(".i:%08x .ui:%08x .si:%08x .b:%08x\r\n", s.i, s.ui, s.si, s.b);
печатает
.i:0000000f .ui:0000000f .si:fffffffd .b:00000001
Дополнил: printf("s:%08x\r\n", *(uint32_t*)&s ); печатает
s:00001dff
Взирая на нынешнее состояние отечества моего с таковым оком, каковое может иметь человек, воспитанный по строгим древним правилам, ... не могу я не дивиться, в сколь краткое время повредились повсюдно нравы в России. (с) кн. М.М. Щербатов.