Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
