Thursday, August 17, 2006

Знаете ли вы, что...

C++ очень странный язык. В нем если порыться, всегда 
можно найти миллион бесполезных фич.

struct A
{
    char d :6; // ну это всем понятно
    unsigned :4; // опечатки нету ;)
    char c :10; // чему равно (x = a.c = 256) ?
    unsigned :0; // и еще фокус-покус
} a;


Pure ISO C++ :)

Отличный вопрос для собеседований, по-моему. По
крайней мере по уровню идиотизма -- самое то.

Если хотите быть language lawyer'ом, вот правильные ответы:
unsigned : 4; // просто 4 unused бита в структуре
char c : 10;  // char все равно 8 битный,
              // а два бита сверху -- просто так :)
unsigned : 0; // тут произойдет выравнивание
              // размера структуры до размера,
              // кратного allocation unit.
              // В конце структуры, правда,
              // бессмысленно это вставлять. :)

No comments: