Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
3-1079957668
DmitryNekl
2004-03-22 15:14
2004.04.18
Поиск по Lookup-полям


1-1080914299
P_a_s_h_a
2004-04-02 17:58
2004.04.18
Как уменьшить мерцание формы при перерисовке?


6-1076917247
vitas_tomsk
2004-02-16 10:40
2004.04.18
Выполнение строки http


14-1080213221
Виктор
2004-03-25 14:13
2004.04.18
Как SQL - запросом в Firebird-е получить


14-1080132427
Dmitriy O.
2004-03-24 15:47
2004.04.18
Во я крут !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский