[an error occurred while processing this directive]
Извините сэр, но хоть u16, хоть u128, хоть u4, но любое арифметическое переполнение согласно ANSI (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru