Цитата(Сергей Борщ @ Feb 24 2007, 22:39)

Цитата(SasaVitebsk @ Feb 24 2007, 19:45)

А я уже вполне взрослый чтобы понимать что пишу.

Ну если бы размер int, long, char(!) был зафиксирован, тогда с этим можно было бы согласиться. А то пишешь из расчета что int 32 бита, а потом при переносе на архитектуру с int = 16 бит начинаются чудеса. К тому же бывает что это преобразование по умолчанию не нужно, и вот тогда приходится...
Код
unsigned char a, b;
if((unsigned char)(a + b) < (unsigned char)0x30)
выглядит несколько странно

Да не подумал. А меня это впрямую касается. Так как собираюсь на ARM переходить. А там int - 32 бита.
Так то я использую объявления типа uint16_t, так что мне это не грозит, а вот умолчания этого не слышал.
Сергей, можно вопрос по второму примеру?
Такая запись обязательна? Или иными словами если я напишу вот так
Код
unsigned char a, b;
if((a + b) < 0x30)
То компилятор сгенерит более громоздкий код?