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