Загадка от Эрика Липперта

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Загадка от Эрика Липперта

Сообщение tyomitch » 11.03.2005 (Пт) 7:43

(гусарам, которым я уже рассказал правильный ответ - молчать!)

Пусть x - переменная типа Variant.

  • когда следующий код напечатает False:
    Код: Выделить всё
    If x = x Then Print True Else Print False

  • а когда этот?
    Код: Выделить всё
    If CStr(x) = CStr(x) Then Print True Else Print False

  • который из них печатает False в большем числе случаев?
Изображение

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 11.03.2005 (Пт) 7:56

Как звезды в небе лягут... :wink:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 11.03.2005 (Пт) 8:34

А как вообще заставить твой код печатать false?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.03.2005 (Пт) 9:18

Дык ты его не запускай, ты думай, когда он в принципе может такое напечатать :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 11.03.2005 (Пт) 9:23

Так я это и спрашивал, потому что что-то не придумывается, а хочется поскорее...

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 11.03.2005 (Пт) 9:35

Ну первое это понятно:
1.
Код: Выделить всё
x = Null
If x = x Then Print True Else Print False

1,2. Еще один вариант, катит также и для первого варианта
Код: Выделить всё
Private Sub Form_Load()
Dim x
Set x = New Class1

If CStr(x) = CStr(x) Then Print True Else Print False
End Sub

Код: Выделить всё
'Делаем некий клас class1
Option Explicit
Function some()
some = Int(Rnd * 10)
End Function
'В атрибутах ставим процедуру по умолчанию

который из них печатает False в большем числе случаев?


2Tyomitch: Тип так :?: :roll:


ЗЫ Ну почему диалап срывает в самый непододящий момент :evil:
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.03.2005 (Пт) 10:56

GM всё разгадал. Congratulations!
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 12.03.2005 (Сб) 7:56

Ура :D Все же разгадал. :twisted:
الفيجوال بيسك الرابح


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 165

    TopList