Я фигею от VB.NET
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 23.07.03 10:30
Оценка: 1 (1) :)
Всем привет!

Не перестаю удивляться крутым парням из MS
        Dim ii As Integer = 0
        Do
            Dim j As Integer
            Console.WriteLine(j)
            j = 10
            ii += 1
        Loop While ii < 3

Кто угадает какой будет вывод?
Re: Я фигею от VB.NET
От: Gollum Россия  
Дата: 23.07.03 10:34
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Не перестаю удивляться крутым парням из MS

AS>
AS>        Dim ii As Integer = 0
AS>        Do
AS>            Dim j As Integer
AS>            Console.WriteLine(j)
AS>            j = 10
AS>            ii += 1
AS>        Loop While ii < 3
AS>

AS>Кто угадает какой будет вывод?

0, 10, 10

?
... << RSDN@Home 1.1 beta 1 >>
Eugene Agafonov on the .NET

Re: Я фигею от VB.NET
От: migel  
Дата: 23.07.03 10:34
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Всем привет!


AS>Не перестаю удивляться крутым парням из MS

AS>
AS>        Dim ii As Integer = 0
AS>        Do
AS>            Dim j As Integer
AS>            Console.WriteLine(j)
AS>            j = 10
AS>            ii += 1
AS>        Loop While ii < 3
AS>

AS>Кто угадает какой будет вывод?
Неужто
0
10
10
Re: Я фигею от VB.NET
От: Аноним  
Дата: 23.07.03 10:34
Оценка: +1
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Всем привет!


AS>Не перестаю удивляться крутым парням из MS

AS>
AS>        Dim ii As Integer = 0
AS>        Do
AS>            Dim j As Integer
AS>            Console.WriteLine(j)
AS>            j = 10
AS>            ii += 1
AS>        Loop While ii < 3
AS>

AS>Кто угадает какой будет вывод?

Не проверял, но думаю, что на консоль попадёт три нуля.
Re[2]: Я фигею от VB.NET
От: Gollum Россия  
Дата: 23.07.03 10:41
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Не проверял, но думаю, что на консоль попадёт три нуля.


А ведь да, кстати
... << RSDN@Home 1.1 beta 1 >>
Eugene Agafonov on the .NET

Re: Я фигею от VB.NET
От: Ved Украина  
Дата: 23.07.03 10:42
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Кто угадает какой будет вывод?

Ну... по идее должен быть
0
0
0
... << RSDN@Home 1.0 beta 7 (MSSQL Edition) >>
Re[2]: Я фигею от VB.NET
От: Аноним  
Дата: 23.07.03 10:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не проверял, но думаю, что на консоль попадёт три нуля.


Проверено:

0
10
10
Re[2]: Я фигею от VB.NET
От: migel  
Дата: 23.07.03 10:49
Оценка:
Здравствуйте, Ved, Вы писали:
Ved>Ну... по идее должен быть
Ved>
Ved>0
Ved>0
Ved>0
Ved>

Это что получается у VB область активации локальной переменной ограничена методом но ни как ни блоком
"...поубывав бы гхадовь..."
Re[3]: Я фигею от VB.NET
От: Ved Украина  
Дата: 23.07.03 10:58
Оценка:
Здравствуйте, migel, Вы писали:

M>Это что получается у VB область активации локальной переменной ограничена методом но ни как ни блоком

M>"...поубывав бы гхадовь..."

Да... лучше тогда помахать VB .NET ручкой.... пока не пофиксят
... << RSDN@Home 1.0 beta 7 (MSSQL Edition) >>
Re: Я фигею от VB.NET
От: Lexey Россия  
Дата: 23.07.03 11:03
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Не перестаю удивляться крутым парням из MS

AS>
AS>        Dim ii As Integer = 0
AS>        Do
AS>            Dim j As Integer
AS>            Console.WriteLine(j)
AS>            j = 10
AS>            ii += 1
AS>        Loop While ii < 3
AS>

AS>Кто угадает какой будет вывод?

Мда, уроды. Могу добавить другой прикол в коллекцию перлов от MS — на этот раз касательно VC++ 7.1.

Есть такой макрос:
#define DESTW buff
#define DebugMsgW(x) {\
        WCHAR buff[1024]; \
    wsprintfW x; \
    OutputDebugStringW(buff); \
}

Он зовется из метода кучу раз примерно так:
void SomeMethod()
{
    ...;
    DebugMsgW((DESTW, L"aaaa"));
    ...
}


Debug-версия, вызов метода идет внутри try/catch. В самом начале метода огребаем эксепшен STACK_OVERFLOW. Угадайте почему?
Re: Я фигею от VB.NET
От: Воронков Василий Россия  
Дата: 23.07.03 11:06
Оценка: :)
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Всем привет!


AS>Не перестаю удивляться крутым парням из MS

AS>
AS>        Dim ii As Integer = 0
AS>        Do
AS>            Dim j As Integer
AS>            Console.WriteLine(j)
AS>            j = 10
AS>            ii += 1
AS>        Loop While ii < 3
AS>

AS>Кто угадает какой будет вывод?

VB.NET рулит?
... << RSDN@Home 1.1 beta 1 >>
Re[2]: Я фигею от VB.NET
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 23.07.03 11:15
Оценка:
Здравствуйте, Gollum, Вы писали:

[]

G>0, 10, 10


Но почему?
Re[2]: Я фигею от VB.NET
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 23.07.03 11:15
Оценка:
Здравствуйте, migel, Вы писали:

[]

M>Неужто

M>0
M>10
M>10

Ага.
Re[3]: Я фигею от VB.NET
От: Gollum Россия  
Дата: 23.07.03 11:19
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

G>>0, 10, 10


AS>Но почему?


Потому что я не обратил внимание, что переменная объявляется в блоке Do Loop...
А вообще — странно все это...
... << RSDN@Home 1.1 beta 1 >>
Eugene Agafonov on the .NET

Re[2]: Я фигею от VB.NET
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 23.07.03 11:28
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Здравствуйте, Alexey Shirshov, Вы писали:


[]

Нет идей. Почему?
Re: Я фигею от VB.NET
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.07.03 11:33
Оценка: +1
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Не перестаю удивляться крутым парням из MS

AS>
AS>        Dim ii As Integer = 0
AS>        Do
AS>            Dim j As Integer
AS>            Console.WriteLine(j)
AS>            j = 10
AS>            ii += 1
AS>        Loop While ii < 3
AS>

AS>Кто угадает какой будет вывод?

Аналог на шарпе просто не скомпилируется.
... << RSDN@Home 1.1 beta 1 (np: тихо) >>
AVK Blog
Re[3]: Я фигею от VB.NET
От: Lexey Россия  
Дата: 23.07.03 11:39
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Нет идей. Почему?


"Оптимизация", блин. Компилятор вытаскивает все объявления WCHAR buf[1024] наружу и складывает их в общую кучу (почему-то напрочь забывая про их реальный scope). При это размер резервируемой на стеке памяти в моем случае раздувается примерно до 180kb (против правильной цифры в районе 20-30). Попытка зарезервировать такой кусок на стеке внутри try/catch вызывает STACK OVERFLOW. Идиотизм, да и только.
Re[2]: Я фигею от VB.NET
От: alien74  
Дата: 23.07.03 11:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Alexey Shirshov, Вы писали:


AS>>Не перестаю удивляться крутым парням из MS

AS>>
AS>>        Dim ii As Integer = 0
AS>>        Do
AS>>            Dim j As Integer
AS>>            Console.WriteLine(j)
AS>>            j = 10
AS>>            ii += 1
AS>>        Loop While ii < 3
AS>>

AS>>Кто угадает какой будет вывод?

AVK>Аналог на шарпе просто не скомпилируется.


ага на шарпе будет:

Use of unassigned local variable 'j'

васик просто на это забивает

всетаки корректнее было бы написать Dim j As Integer = 0, и будет все нормально — три нуля
ведь дали же такую возможность, и для особо одаренных сказали что не очень корректно объявлять переменную без иницилизации, но можно
Re[3]: Я фигею от VB.NET
От: LCR Россия lj://_lcr_
Дата: 23.07.03 12:03
Оценка: -2
Здравствуйте, Alexey Shirshov, Вы писали:

G>>0, 10, 10


AS>Но почему?


AS>        Dim ii As Integer = 0
AS>        Do
AS>            Dim j As Integer
AS>            Console.WriteLine(j)
AS>            j = 10
AS>            ii += 1
AS>        Loop While ii < 3


На первой итерации цикла переменной j не существует, она создаётся и ей по умолчанию присваивается 0. После WriteLine j получает значение 10.
На второй итерации цикла переменная j уже существует, и поэтому инструкция "Dim j As Integer" ничего не делает.
То же самое на третьей итерации.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Я фигею от VB.NET
От: nob114  
Дата: 23.07.03 12:47
Оценка: -1
Kto ge peremnnuu vnutri tsikla objavlyaet ??? Objavite gde to eshe — a vistavit' mogno i v tsikle. Definitely buggy code.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.