Цитата(V_G @ Nov 6 2013, 18:00)

Если перейдете на С++ (язык с более строгим контролем соответствия типов данных) , то компилятор по-хорошему должен выдать сообщение об ошибке и потребовать явного приведения к типу. Всякого рода умолчания тут вредны.
Это именно C++.
А в чём именно ошибка? Int делим на Short (или любой другой тип без знака). В результате будет Int. Это ошибка?
Цитата(zhevak @ Nov 6 2013, 20:47)

И надо учитывать, что sizeof возвращает не unsigned char, и даже не unsigned int, а size_t.
Функция у sizeof() - вернуть константу, то есть самое обычное число без знака. Каким образом её результат может влиять на знак выражения типа: -100/х = y?
Цитата(AHTOXA @ Nov 6 2013, 20:59)

Если там gcc, то за это предупреждение отвечает флаг -Wsign-compare.
Проверил на других компиляторах: IAR и CodeVision не страдают этой ошибкой и генерят код в соответствии с математическими правилами и моими ожиданиями.
А вот GCC в AtmelStudio и для ARMов точно также отбрасывает знак и считает, что результат может быть только положительный.
Прискорбно