Целочисленное деление и побайтовые операции
От: DukeNukem3D Россия  
Дата: 21.12.05 10:15
Оценка:
Я приступил к изучению VBA совсем недавно, поэтому, возможно мой вопрос покажется совсем глупым, но нигде четого ответа я не нашел, поэтому решил обратиться сюда.

Задачка следующая:

1.Мне непонятно назначение и правило работы логического оператора Imp — почему результат будет ложным, только тогда, когда правый операнд равен False, хотя таблица истинности выглядит слеюущим образом:

False Imp False = True //правый операнд False! а результат веравно True?!
False Imp True = True
True Imp False = False
True Imp True = True

2. Побайтовый оператор Or работает странным образом:

2 Or 3 //0 , однако MsgBox выдает значение 3! в книге же вообще: 2
4 Or 5 //3 , однако MsgBox выдает значение 5! 4
6 Or 7 //5 , однако MsgBox выдает значение 7! 6

3. Оператор целочисленного деления тоже странноват:

2 Mod 3 //2 в книге пишут: 0
4 Mod 5 //4 0
6 Mod 7 //7 0, с чем я полностью согласен

Буду примного благодарен, если увижу вразумительный ответ что не верно (мой код/книга/глючный компилер или др.)
С уважением, Андрей
Re: Вразумительный ответ.
От: ZAMUNDA Земля для жалоб и предложений
Дата: 21.12.05 10:46
Оценка:
Здравствуйте, DukeNukem3D, Вы писали:

DND>Я приступил к изучению VBA совсем недавно, поэтому, возможно мой вопрос покажется совсем глупым, но нигде четого ответа я не нашел, поэтому решил обратиться сюда.


DND>Задачка следующая:


DND>1.Мне непонятно назначение и правило работы логического оператора Imp — почему результат будет ложным, только тогда, когда правый операнд равен False, хотя таблица истинности выглядит слеюущим образом:


DND>False Imp False = True //правый операнд False! а результат веравно True?!

DND>False Imp True = True
DND>True Imp False = False
DND>True Imp True = True
В MSDN написано так:

expression1_____expression2_____result
True____________True____________True
True____________False___________False
True____________Null____________Null
False___________True____________True
False___________False___________True
False___________Null____________True
Null____________True____________True
Null____________False___________Null
Null____________Null____________Null

Всё правильно, видно косяк в книге.

DND>2. Побайтовый оператор Or работает странным образом:


DND>2 Or 3 //0 , однако MsgBox выдает значение 3! в книге же вообще: 2

2:::0010
OR
3:::0011
=
3:::0011

DND>4 Or 5 //3 , однако MsgBox выдает значение 5! 4

4:::0100
OR
5:::0101
=
5:::0101

DND>6 Or 7 //5 , однако MsgBox выдает значение 7! 6

6:::0110
OR
7:::0111
=
7:::0111

DND>3. Оператор целочисленного деления тоже странноват:

mod, это оператор получения остатка отделения. В C++ это "%".

DND>Буду примного благодарен, если увижу вразумительный ответ что не верно (мой код/книга/глючный компилер или др.)

Если откровенно, тут был не очень вразумительный вопрос.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.