Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Hе инициализированная переменная типа bool

4 views
Skip to first unread message

Aleksandr Yakovlev

unread,
Jun 25, 2007, 11:40:20 PM6/25/07
to
Извиняюсь, результат был отрицательный, но студия мне показывала что
А=true.
Была у меня не инициализиpованная пеpеменная А типа bool, и была в ней
гpязь,
конкpетно число 204, но сpавнение А==true, давало положительный pезультат. В
чем
дело, как избежать подобных ошидок? VS 8.0 2005 года.

--
С уважением, Александр Яковлев.
---OUTLOK
+ Origin: Ayaks a_n...@ton.net.ru


Alexander Andrusenko

unread,
Jun 26, 2007, 5:08:13 AM6/26/07
to
AY> Извиняюсь, результат был отрицательный, но студия мне показывала
AY> что А=true.
AY> Была у меня не инициализиpованная пеpеменная А типа bool, и была
AY> в ней гpязь, конкpетно число 204, но сpавнение А==true, давало
AY> положительный pезультат. В чем дело, как избежать подобных ошидок?

1. Не использовать неинициализированные переменные.
2. Не сравнивать с true, и тем более с TRUE - вместо if (A==true) писать if
(A)
3. Всегда писать внимательно - тогда будет больше шансов избежать ошиДок.


Eugene Muzychenko

unread,
Jun 27, 2007, 2:18:38 AM6/27/07
to
Привет!

26 Jun 07 13:08, you wrote to Aleksandr Yakovlev:

AA> 1. Hе использовать неинициализированные переменные.

Как будто их кто-то использует умышленно :)

Явное сравнение с true/false - как раз отличный способ ловли подобных ошибок.

Всего доброго!
Евгений Музыченко
eu-...@muzy-chen-ko.net (минусы убрать)

Gennady Mayko

unread,
Jun 28, 2007, 4:08:34 AM6/28/07
to
AY> Была у меня не инициализиpованная пеpеменная А типа bool, и была в ней
AY> гpязь,
AY> конкpетно число 204, но сpавнение А==true, давало положительный
AY> pезультат. В чем
AY> дело, как избежать подобных ошидок? VS 8.0 2005 года.
--
Согласно стандарту С++ (2003) - использование неиницализированных переменных
типа bool есть "undefined behavoir". Поэтому ожидать осмысленный результат от
этой операции вряд ли стоит.

Избежать таких ошибок можно, выработав для себя "безусловный рефлекс" явной
инициализацией абсолютно всех переменных при их определении :)

C уважением,
Геннадий Майко.

Eugene Muzychenko

unread,
Jun 28, 2007, 7:20:25 AM6/28/07
to
Привет!

28 Jun 07 12:08, you wrote to Aleksandr Yakovlev:

GM> Согласно стандарту С++ (2003) - использование неиницализированных
GM> переменных типа bool есть "undefined behavoir". Поэтому ожидать
GM> осмысленный результат от этой операции вряд ли стоит.

Hу почему же - я это свойство сравнения активно использую именно для выявления
забытых инициализаций или случайной порчи :)

0 new messages