![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приведение Boolean к Integer [D7]
Ega23 © (2007-11-13 15:48:00)Гарантировано ли Integer(True) даст единицу, а Integer(False) - 0?
Anatoly Podgoretsky (2007-11-13 16:59:00) [1]> homm (13.11.2007 16:21:04) [4]
Вот это более правильная проверка, но не совсем, поскольку я не зря говорил, про грабли на которые наступили СИшника в Виндоус, которые посчитали, что TRUE это 00000001, на теже грабли пытаешься наступить ты, некоторые функции могут вернуть $FFFFFFFF, а это меньше нуля, правлиьно будет так
Integer(True) <> 0
Гарантируется только, что False = 0
clickmaker (2007-11-13 16:22:00) [2]Integer(True) <> 0
homm (2007-11-13 16:21:00) [3]Integer(True) > 0
Anatoly Podgoretsky (2007-11-13 16:16:00) [4]Второе гарантировано, первое нет.
На подобных гарантиях народ уже спотыкался.
Ega23 (2007-11-13 15:53:00) [5]
> корректней приводить через Ord
Точно!
Не подумал. Большое спасибо!
Palladin (2007-11-13 15:52:00) [6]корректней приводить через Ord
ну а какие значения они могут дать, зависит от компилятора, хотя думаю что для всех версий 1 и 0... в справке смотреть нужно...