Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Филисофия программирования   Найти похожие ветки 

 
cypher ©   (2004-03-26 15:14) [0]

Оказывается в Дельфи true не равен true!

var
 b1, b2 : boolean;
begin
 b1 := boolean(1);  // b1 = true;
 b2 := boolean(2);  // b2 = true;
 if b1 = b2 then
    showmessage ("ops")
 else
   showmessage ("ups");
end;

Результат - "ups". То есть, в дельфи есть 255 значений истины, и всего одно значение лжи.

Отсюда глубокий филосовский вывод: истина - относительна, ложь - абсолютна.

=)


 
Petr V. Abramov ©   (2004-03-26 15:18) [1]

> b1 := boolean(1);  // b1 = true;
> b2 := boolean(2);  // b2 = true;
 Философия - не закладывайтесь на детали реализации. Boolean в том числе :)


 
Nikolay M. ©   (2004-03-26 15:19) [2]


> b1 := boolean(1);  // b1 = true;

А если вместо 1 поставить 3, 4, 5 и тд? :)


 
cypher ©   (2004-03-26 15:35) [3]

О чем и спич!
Филосовский вопрос можно поставить иначе:  а нахрена в таком случае boolean как тип в такой реализации?


 
TButton ©   (2004-03-26 15:39) [4]

ну ексь boolean, это ж байт полюбому =) жалко нет типа который занимал бы неполный байт, прикиньте сколько бы памяти освободилось бы...


 
Sphinx ©   (2004-03-26 15:44) [5]

А каким количеством бит кодируется "Истина"? Я вот чесно не помню и Делфи под рукой нет что бы проверить, но помоему двумя байтами, а это 65536 значений.

И кроме того:
if b1 then
   showmessage ("ops");

if b2 then
   showmessage ("ops");

оба выдадут "Ops"


 
TButton ©   (2004-03-26 15:46) [6]

ибо нефиг издеваться! =)


 
Petr V. Abramov ©   (2004-03-26 15:47) [7]

> а нахрена в таком случае boolean как тип в такой реализации?
 чтоб ему присваивали true и false, либо boolean expr.


 
cypher ©   (2004-03-26 16:12) [8]

> чтоб ему присваивали true и false, либо boolean expr.
А как же проверка, преобразование и совместимость типов ?
=)


 
McSimm ©   (2004-03-26 16:24) [9]

А не надо сравнивать истины :)

if b1 or b2 then


 
Petr V. Abramov ©   (2004-03-26 16:25) [10]

На свой страх и риск. Вы ж не возмущетесь, когда на
var
 b: boolean;
begin
 b := 2
end

 Вам компилятов ошибку дает? А если где-то, кроме документации, подглядели, что false - на самом деле просто ноль, а true - просто не ноль - ну радуйтесь. Только Вам никто не гарантирует, что в следующей версии это будет так же.
 Вот из той же (примерно) серии
var
 C: TComponent;
begin
 C := TButton.Create(nil);
 TDataSet(C).Open // :)
end;
 Тоже "преобразование и совместимость типов". Тоже плачевный результат. Но кто в нем виноват? :) А потому, что TButton - это TButton, а TDataSet - это TDataSet. Так же, как boolean - это boolean, а integer - это integer. И приведение мух к котлетам и котлет к мухам не всегда гаранитированно удачно :)


 
McSimm ©   (2004-03-26 16:29) [11]

ой, хотел xor вообще-то написать :(


 
cypher ©   (2004-03-26 16:37) [12]

2 McSimm
может AND ?


 
cypher ©   (2004-03-26 16:38) [13]

вернее !xor =)


 
olookin ©   (2004-03-28 11:54) [14]

Отсюда глубокий филосовский вывод: истина - относительна, ложь - абсолютна.

Мне думается, что истина/ложь не только относительные понятия, но и варьируют в зависимости от реализации. Например, высказывание "olookin - дурак" в теории может принять два значения - да или нет. Но только если строго сформулирован закон, по которому можно определить дурак olookin или все-таки не дурак. А до тех пор, пока этот закон не сформулирован, значения для такого высказывания могут быть различными. Так и в этом случае - тип boolean принимает целую совокупность значений. И какое значение отражает свойство "ложь", а какое - "истина", сказать трудно.



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
6-1076337166
StasIK
2004-02-09 17:32
2004.04.18
Помогите закрыть доступ в инет


4-1076339655
}{enon
2004-02-09 18:14
2004.04.18
Как получить сообщение?


14-1080135471
Матлабист
2004-03-24 16:37
2004.04.18
Нашел статью по БД


6-1076568892
Kremen
2004-02-12 09:54
2004.04.18
MAC-адрес


14-1079916395
AZ
2004-03-22 03:46
2004.04.18
Как вы делаете “бэкап” проекта при перерыве в работе?