> -- Роман М. писал(а):
> ну если так, то непонятен механизм логического преобразования.
в си логический тип определяется со значениями 0 и 1.
попутно считается, что всё, что НЕ РАВНО 0 - истина.

то есть:

пусть

a = 0b01
b = 0b10

тогда

a & b == 0b00 == 0 == FALSE
a && b == (bool)0b01 && (bool)0b10 == TRUE && TRUE == TRUE == 1

или, ещё

с = 0b01

d = !c // == !((bool) 0b01) == ! TRUE == FALSE == 0
e = ~c // == ~0b0 == 0b10 == 1 == TRUE

будьте внимательны!

PS ещё более внимательны будьте в случае с работой с XOR-ом (^) это ПОБИТОВАЯ операция. со всеми вытекающими...
PPS строка e = ~c // == ~0b0 == 0b10 == 1 == TRUE
правильней бы, для иллюстрации, выглядела бы так:
e = !!~c // == !!~0b0 == !!0b10 == !!1 == !!TRUE == !FALSE == TRUE == 1