В C нет логического типа, по крайней мере, если вы не погрузитесь в большинство неиспользуемых частей стандарта.
Выражения, которые с точки зрения семантики имеют логические значения, управляются компилятором как int
s со значениями 1 (для истины) и 0 (для ложных значений). Затем вы можете присвоить это значение char
, и оно будет соответственно понижено или понижено.
Это:
char a, b, c;
a = (b == c);
Работает так:
char a, b, c;
a = (b == c) ? 1 : 0;
И 1, и 0 имеют целочисленный тип, пониженный до char при назначении.