[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
По стандарту C типы, меньшие int преобразуются перед выполнением операций в int. Если компилятор ведет себя иначе - значит в нем ошибка. Если же программист сам включил опцию, говорящую, что не нужно расширять байты до инта, и получил не то, что ожидал - сам виноват. Только это уже вопрос, имеющий отношение не к языку программирования, а к конкретному компилятору.
А полагаться на то, что 256 не влазит в байт, и поэтому 256*hi даст правильный результат, а hi<<8 неправильный - не слишком ли тонко? Не лучше ли всегда писать явное расширение переменной к большему типу 256*((unsigned int)hi), если возникает потребность работать с нестандартными режимами компиляции?
E-mail: info@telesys.ru