Страница: 1 |
Страница: 1 |
Вопрос: "Странности" передачи параметров
Добавлено: 23.02.10 21:53
Автор вопроса: Олег
Кто знает, объясните, пожалуйста, как это "работает"?
Код на Листе1 в Excel:
Call Proba(3 Or 9)
End Sub
Sub Proba(F As Integer)
MsgBox (F)
End Sub
Теперь когда изменяем значение любой ячейки на Листе1, выскакивает сообщение с цифрой 11. Почему именно 11?
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Олег
Вопросов: 9
Ответов: 30
Профиль | | #1
Добавлено: 23.02.10 21:57
А, до меня дошло... Это, наверно, побитовое сложение или что-то в этом роде!
Номер ответа: 2
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #2
Добавлено: 24.02.10 08:43
____ Естественно. При таком сложении получается 11.
Номер ответа: 3
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #3
Добавлено: 24.02.10 12:56
угу, значит у всех 3+9=12, а у бейсика своя таблица умножения!
Номер ответа: 4
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #4
Добавлено: 24.02.10 14:39
____ Вообще не понятно, почему автор поставил "or", а не "+". Тогда бы и не удивлялся.
____ А поразрядное двоичное логическое "сложение" 0011 or 1001 как раз и даёт 1011, то есть 11 в десятичной системе.
Номер ответа: 5
Автор ответа:
Олег
Вопросов: 9
Ответов: 30
Профиль | | #5
Добавлено: 24.02.10 16:12
Вообще не понятно, почему автор поставил "or", а не "+". Тогда бы и не удивлялся.
Да это я искал объяснение "загадочной" передаче параметров в примере вот из этой темы: http://www.vbnet.ru/forum/show.aspx?id=202225
Не понимал, вот и экспериментировал с простыми примерчиками, а получился "парадокс", как мне тогда казалось. Теперь разобрался. Там просто флаги устанавливают таким образом. А при помощи OR очень удобно устанавливать биты в двоичных числах. Давненько низкоуровневым программированием не занимался... подзабылось
Номер ответа: 6
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #6
Добавлено: 24.02.10 23:36
Or используют для составления значения с битовыми флагами в клиентской программе, а распознают внутри вызываемой подпрограммы флаги при помощи And и битовой маски.