Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Переменные2 Добавлено: 19.11.03 21:53  

Автор вопроса:  Cooller

Sorry может вопрос не так задал ... Я имел введу как 2 переменные(пусть A и B) поменять местами ??? (Например в Qbasic`е была комманда Swap. Есть ли аналог этой комманды в Vb 6.0)

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #1
Добавлено: 19.11.03 23:27

а тебе уже ответили как поменять их местави... ... хотя тот способ был нехорошm вплане переполнения.... а так используй третью переменную.... и будет так примерно

Function SwapVar(ByRef a as long, ByRef b as long)

Dim tmp as long

a=tmp

a=b

b=tmp

End Function

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 21.11.03 15:26

Зачем Long? Variant, тогда не надо будет думать о типе!

А вообще, для чисел есть еще один способ без дополнительной переменной...

А swap негодяи из Мелкософта убрали... Теперь сортировка пузырьком в два раза длинее стала. Хотя пузырек - это, конечно, мастдай.

Ответить

Номер ответа: 3
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #3
Добавлено: 21.11.03 22:13

1) Использование ВАРИАНТ переменных это плохой тон програминрования..... а так же медленность .... кода.... ВБ и так .. относится к типам мягко ... а про Вариант переменные лучше забудь и никогда не используй.....

2) Почему Long ? да потому что .... это самый большой тип данных..... никто не мешает тебе сунуть в Лонг тип .... переменную с типом Байт скажем.... это вполне совместимо .....

3) Если ты имеешь ввиду методом сложения и вычитания .... то да можно ... НО может быть ПЕРЕПОЛНЕНИЕ.... так что метод отпадает ..... можно впринцыпи на АСМе скомпилить ДЛЛ .... есть очень быстрый и хороший способ смены переменных.... смысл такой

push eax

push ebx

pop eax

pop ebx

таким образом значение этих регистров сменятся ...

П.С: НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ВАРИАНТ ТИПОВ !

Ответить

Номер ответа: 4
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #4
Добавлено: 21.11.03 22:41

Ой ой ой микро неточность ..... если функция не возвращает ничего то она SUB.... это конечно никак не скажится на коде ... но просто чтоб уж .. быть коректным... и не довать неточных примеров +)

Sub SwapVar(ByRef a as long, ByRef b as long)

Dim tmp as long

a=tmp

a=b

b=tmp

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #5 Добавлено: 22.11.03 00:12

Если переменные не Variant, то я пользуюсь таким способом:

a = a Xor b

b = a Xor b

a = a Xor b

дополнительные переменные не требуются

Ответить

Номер ответа: 6
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #6
Добавлено: 22.11.03 02:35

красиво

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 01.01.04 19:09
Сорри за неточности. Теперь моя очередь. Использовать DLL-вызов для такого дела - уже изврат. Тогда уж лучше всю сортировку писать на асме и пихать ее в DLL. И прикол со стеком, конечно, хороший, но не очень смешной. Проц имеет команду xchg (кажись) с двумя аргументами. Самый быстрый в мире Swap

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам