[an error occurred while processing this directive]
Извините сэр, но хоть u16, хоть u128, хоть u4, но любое арифметическое переполнение согласно ANSI (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
|
Отправлено
SM 22 апреля 2005 г. 01:50
В ответ на: там u16 отправлено
Fat Robot 21 апреля 2005 г. 16:56
|
|
|
|
независимо от разрядности и прочих условий есть "undefined behavior". Позволю себе повторить имеющийся пример:
u16 i = 0;
do putc(i);
while (i += 128);
В этом примере переменная i может стать равной нулю, что есть критерий выхода из цикла, только в результате переполнения разрядной сетки. Что, опять же, согласно основному документу, регламентирующему требования к компилятору ANSI С, имеет полное право привести к непредсказуемому результату. Всё законно. Для примера - ведь при переполнении АЛУ процессора вовсе не обязано "перекрутиться через ноль". Оно может быть и в режиме насыщения, застряв для этого "u16", допустим беззнакового, и допусти 16-битного, в значении 0xFFFF. P.S. А кстати, согласно ANSI, "u16" это вообще что такое? Плиз цитату или ссылочку на страницу стандарта. В общем мое мнение таково - закон есть закон, то есть ANSI. Все остальное шатание вокруг это просто незнание закона, которое, как известно, от ответственности не освобождает.
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru