Составители:
Рубрика:
37
близок к нулю, а результат не может быть сохранен в типе частного
(превышает его).
5. Существуют ли неточности при работе с двоичными числами?
6. Не выходит ли значение переменной за пределы установленного
диапазона?
Может ли значение переменной выходить за пределы установ-
ленного для нее логического диапазона? Например, для операторов,
присваивающих значение переменной probability (вероятность), мо-
жет быть произведена проверка, будет ли полученное значение все-
гда положительным и не превышающим единицу. Другие диапазоны
могут зависеть от области решаемых задач.
7. Правильно ли осуществляется деление целых чисел?
Встречается ли неверное использование целой арифметики, осо-
бенно деления? Например, если i – целая величина, то выражение
2*i/2 = i
зависит от того, является значение i четным или нечет-
ным, и от того, какое действие – умножение или деление – выполня-
ется первым.
2.4.4. Ошибки при сравнениях
Сводный список вопросов таков:
1. Сравниваются ли величины несовместимых типов? Например, число
со строкой?
2. Сравниваются ли величины различных типов?
Например, переменная типа int с переменной типа long? Каждый
язык ведет себя в этих случаях по-своему, проверьте это по его опи-
санию. Как выполняются преобразования типов в этих случаях?
3. Корректны ли отношения сравнения?
Иногда возникает путаница понятий «наибольший», «наимень-
ший», «больше чем», «меньше чем».
4. Корректны ли булевские выражения?
Если выражения очень сложные, имеет смысл преобразовать их
или
проверять обратное утверждение.
5. Понятен ли порядок следования операторов?
Верны ли предположения о порядке оценки и следовании опера-
торов для выражений, содержащих более одного булевского опера-
тора? Иными словами, если задано выражение (А == 2) &&
(В == 2) || (С == 3), понятно ли, какая из операций выполня-
ется первой: И или ИЛИ?
6. Понятна ли
процедура разбора компилятором булевских выражений?
Влияет ли на результат выполнения программы способ, которым
конкретный компилятор выполняет булевские выражения? Напри-
мер, оператор
if ((x != 0) && ((y/x) > z))
близок к нулю, а результат не может быть сохранен в типе частного (превышает его). 5. Существуют ли неточности при работе с двоичными числами? 6. Не выходит ли значение переменной за пределы установленного диапазона? Может ли значение переменной выходить за пределы установ- ленного для нее логического диапазона? Например, для операторов, присваивающих значение переменной probability (вероятность), мо- жет быть произведена проверка, будет ли полученное значение все- гда положительным и не превышающим единицу. Другие диапазоны могут зависеть от области решаемых задач. 7. Правильно ли осуществляется деление целых чисел? Встречается ли неверное использование целой арифметики, осо- бенно деления? Например, если i – целая величина, то выражение 2*i/2 = i зависит от того, является значение i четным или нечет- ным, и от того, какое действие – умножение или деление – выполня- ется первым. 2.4.4. Ошибки при сравнениях Сводный список вопросов таков: 1. Сравниваются ли величины несовместимых типов? Например, число со строкой? 2. Сравниваются ли величины различных типов? Например, переменная типа int с переменной типа long? Каждый язык ведет себя в этих случаях по-своему, проверьте это по его опи- санию. Как выполняются преобразования типов в этих случаях? 3. Корректны ли отношения сравнения? Иногда возникает путаница понятий «наибольший», «наимень- ший», «больше чем», «меньше чем». 4. Корректны ли булевские выражения? Если выражения очень сложные, имеет смысл преобразовать их или проверять обратное утверждение. 5. Понятен ли порядок следования операторов? Верны ли предположения о порядке оценки и следовании опера- торов для выражений, содержащих более одного булевского опера- тора? Иными словами, если задано выражение (А == 2) && (В == 2) || (С == 3), понятно ли, какая из операций выполня- ется первой: И или ИЛИ? 6. Понятна ли процедура разбора компилятором булевских выражений? Влияет ли на результат выполнения программы способ, которым конкретный компилятор выполняет булевские выражения? Напри- мер, оператор if ((x != 0) && ((y/x) > z)) 37
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »