Я не могу найти нигде в стандарте C, где это указано. Например, в
struct { signed int x:1; } foo;
есть foo.x
lvalue типа int
, или что-то еще? Кажется неестественным для него быть lvalue типа int
, так как вы не можете хранить в нем какое-либо значение типа int
, только 0 или -1, но я не могу найти какой-либо язык, который присвоил бы ему другой тип. Конечно, используется в большинстве выражений, в любом случае его можно было бы повысить до int
, но фактический тип имеет значение в C11 с _Generic
, и я не могу найти какой-либо язык в стандарте о том, как битовые поля взаимодействуют с _Generic
либо.