Страница: 1 |
Sorry может вопрос не так задал ... Я имел введу как 2 переменные(пусть A и B) поменять местами ??? (Например в Qbasic`е была комманда Swap. Есть ли аналог этой комманды в Vb 6.0)
а тебе уже ответили как поменять их местави... ... хотя тот способ был нехорошm вплане переполнения.... а так используй третью переменную.... и будет так примерно Function SwapVar(ByRef a as long, ByRef b as long) Dim tmp as long a=tmp a=b b=tmp End Function Зачем Long? Variant, тогда не надо будет думать о типе! А вообще, для чисел есть еще один способ без дополнительной переменной... А swap негодяи из Мелкософта убрали... Теперь сортировка пузырьком в два раза длинее стала. Хотя пузырек - это, конечно, мастдай. 1) Использование ВАРИАНТ переменных это плохой тон програминрования..... а так же медленность .... кода.... ВБ и так .. относится к типам мягко ... а про Вариант переменные лучше забудь и никогда не используй..... 2) Почему Long ? да потому что .... это самый большой тип данных..... никто не мешает тебе сунуть в Лонг тип .... переменную с типом Байт скажем.... это вполне совместимо ..... 3) Если ты имеешь ввиду методом сложения и вычитания .... то да можно ... НО может быть ПЕРЕПОЛНЕНИЕ.... так что метод отпадает ..... можно впринцыпи на АСМе скомпилить ДЛЛ .... есть очень быстрый и хороший способ смены переменных.... смысл такой push eax push ebx pop eax pop ebx таким образом значение этих регистров сменятся ... П.С: НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ВАРИАНТ ТИПОВ ! Ой ой ой микро неточность ..... если функция не возвращает ничего то она SUB.... это конечно никак не скажится на коде ... но просто чтоб уж .. быть коректным... и не довать неточных примеров +) Sub SwapVar(ByRef a as long, ByRef b as long) Dim tmp as long a=tmp a=b b=tmp End Sub Если переменные не Variant, то я пользуюсь таким способом: a = a Xor b b = a Xor b a = a Xor b дополнительные переменные не требуются красиво Страница: 1 |
Вопрос: Переменные2
Добавлено: 19.11.03 21:53
Автор вопроса:
Cooller
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа: Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #1
Добавлено: 19.11.03 23:27
Номер ответа: 2
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 21.11.03 15:26
Номер ответа: 3
Автор ответа: Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #3
Добавлено: 21.11.03 22:13
Номер ответа: 4
Автор ответа: Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #4
Добавлено: 21.11.03 22:41
Номер ответа: 5
Автор ответа: cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 22.11.03 00:12
Номер ответа: 6
Автор ответа: Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #6
Добавлено: 22.11.03 02:35
Номер ответа: 7
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 01.01.04 19:09
Сорри за неточности. Теперь моя очередь. Использовать DLL-вызов для такого дела - уже изврат. Тогда уж лучше всю сортировку писать на асме и пихать ее в DLL. И прикол со стеком, конечно, хороший, но не очень смешной. Проц имеет команду xchg (кажись) с двумя аргументами. Самый быстрый в мире Swap