- •Лекция 4 Операции и выражения
- •Понятие выражения и операции
- •Классификация операций
- •Приоритеты (ранги) операций
- •Арифметические операции
- •Примеры использования арифметических операций Выделение цифр в целом числе
- •Выделение цифр в вещественном числе
- •Арифметические операции над переменными символьного типа
- •Операции инкремента и декремента
- •Особенности выполнения операций инкремента и декремента
- •Операции присваивания
- •Примеры использования
- •Операции отношения
- •Логические операции
- •Особенности выполнения логических операций
- •Примеры использования логических операций
- •Логические выражения и примеры их записи
- •Поразрядные логические операции
- •Примеры выполнения поразрядных логических операций:
- •Операции поразрядного сдвига
- •Дополнительные операции Операции доступа к компонентам структурированного объекта
- •Операции доступа к адресуемым компонентам классов
- •Определение размера sizeof
- •Вызов функции ( )
- •Индексация [ ]
- •Операция запятая ,
- •Операция расширения области видимости ::
- •Преобразование типа
- •Правила преобразования типов
- •Примеры преобразования типов
- •2. Особенности преобразования типов int и double:
- •7. Проанализируйте преобразование типов в операторах присваивания:
- •8. Приведение типа в случае использования указателей:
- •9. Преобразование старшего типа к младшему удобно использовать для выделения отдельных частей переменной или константы:
- •10. С помощью приведения типа можно получить дробную часть числа:
- •Программирование вычисления алгебраических выражений
- •Определение первого символа вводимого значения
- •Контроль правильности ввода значения переменной
- •Основные встроенные (стандартные) функции
- •Пример вычисления по формуле
- •Замечания по программированию алгебраических выражений
- •Особенности представления чисел по двоичному основанию*
- •Особенности выполнения арифметических операций над вещественными числами*
- •Операции умножения и деления
- •Операции сложения и вычитания
- •Особые ситуации Ошибки округления
- •Ошибки переполнения
- •Потеря (исчезновение) порядка
- •Катастрофическая потеря порядка
- •Потеря значащих цифр
- •Особенности выполнения операций отношения (сравнения)
- •Обратить внимание
- •Правила работы с данными вещественных типов
Правила работы с данными вещественных типов
-
при выполнении операций и вычислении значений функций действуют правила математики: нельзя выполнить деление на 0, извлечь корень из отрицательного числа, вычислить логарифм отрицательного числа и т.д.;
-
вычисления над вещественными числами дают почти всегда неверный результат: насколько неверный – зависит от природы вычислений;
-
вещественные числа редко бывают точно равны; из-за ограничения разрядов на мантиссу невозможно точное равенство двух величин; почти всегда имеют место погрешности округления; эти особенности необходимо знать и при программировании избегать их;
-
из–за фиксированного числа разрядов на мантиссу и порядок происходит ряд неприятностей; усечение – отбрасывание лишних цифр – плохо, округление – лучше; процессор всегда округляет значение;
-
ограничение разрядов порядка приводит к переполнению порядка, к отрицательному переполнению порядка или равенству его нулю.
-
количество цифр в мантиссе – точность представления; ненадежные цифры могут привести к серьезной потере точности;
-
добавление или вычитание малого (даже относительно малого) числа может никак не сказаться на результате (например, 1Е+15 и 1Е+10); необходимо перестроить формулу вычислений настолько, насколько это позволяет алгоритм или вводить общий масштаб;
-
при вычитании близких значений происходит потеря точности;
-
последовательность выполнения вычислений может повлиять на результат;
-
получение больших чисел может вызвать переполнение порядка, а очень малых – исчезновение числа (превращение в 0);
-
если один из операндов вещественный, а другой целый, то перед выполнением операции операнд целого типа приводится к вещественному типу; результат имеет вещественный тип;
-
если при выполнении арифметических операций с операндами вещественного типа получается значение, превосходящее максимально допустимое для этого типа, то происходит прерывание программы по переполнению;
-
форматированием вывода нужно пользоваться аккуратно, т.к. существует «эффект» форматирования вывода: при выводе вещественного числа происходит «усечение» с округлением дробной части до указанного числа позиций, поэтому можно увидеть «неправильные» результаты: например, значение 1.0000000000Е-10 при выводе в формате: 10:5 дает 0.00000.