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