Использование выражений типа
Код
if(a == true)
само по себе вроде и не страшно, но неправильно, потому как проверять по равенству/неравенству действительно можно только на false
Цитата
как
Код
(val == 0 ? 0 : 1)
Цитата
стандартный включаемый файл stdbool.h, который определяет
#define bool _Bool
#define true 1
#define false 0
Использую чуть другие буквы и не использую файл stdbool.h
Код
#define false 0
#define true (!(false))
Последняя строчка априори верна. true в таком случае опять же равно +1.
Но, IMHO, использование в Си беззнаковых типов для bool и положительного значения для true это какая-то диверсия, что ли. Из знакового в беззнаковое преобразовать практически всегда возможно, а вот наоборот нет. Использую знаковое представление.
Код
typedef int bool; // для 8-и-битников typedef signed char bool
Хотя это, если таки пытаться делать проверку на true, вылазит боком при использовании структур с битовыми полями объявленного знакового типа bool. Тогда компилятор при знаковом целом типе для bool считает значение поля не как 1, а как -1, а сравнение с true просто никогда не работает (ну и не очень-то и хотелось

).