Как мы уже видели раньше,
Основные типы 2.6
d = f = l = i = 100000/3 (d=(f=(l=(i=(100000/3)))) |
|
(d=(f=(l=(integer)33333))) и i=33333 или переполнение |
Как мы уже видели раньше, 33333 - значение, переполняющее 16-разрядное целое со знаком. Если для представления целых использовать больше разрядов, то i так же, как l, f и d, получат значение 33333. Ниже мы ориентируемся на 16-разрядные целые. |
(d=(f=(long)-32203)) и l=-32203 |
Результат операции, приведшей к переполнению, - это обычное число, но не то, которое ожидалось. Значение 33333 будет потеряно независимо от дальнейших приведений типов. |
(d=(float)-32203) и f=-32203 (double)-32203 и d=-32203 32203 двойной точности |
О числах. Работа с числами не самая сильная сторона языка С. Язык не дает способа выявить арифметические ошибки, даже если аппаратура и имеет такие средства. Диапазон представления чисел фиксируется при написании транслятора, и в языке нет средств, чтобы задать этот диапазон. Лучшее, что можно сделать для проверки попадания числа в диапазон, - это явный контроль значений переменных в критических точках вычисления.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий