Форум: "Потрепаться";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизФилисофия программирования Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.031 c