| FAQ по Visual Basic |
| Содержание / Начальные сведения о VB |
|
|
§ 3.4. Эти нехорошие операторы
Зачастую бывает так, что программа глючит непонятно
Как известно, в Этот оператор тоже имеет отношение к битовым операциям. Дело в том, что, к сожалению, он не приводит аргумент к типу Boolean, а работает как оператор дополнения “~”. Поэтому код в примере ниже, расположенный после Else, выполнен никогда не будет:
Dim hFile As Long, lRead As Long
Dim bData(0 To 255) As Byte
. . .
If Not ReadFile(hFile, bData(LBound(bData)), _
UBound(bData) - LBound(bData) + 1, _
lRead, ByVal 0&) _
Then
Exit Sub
Else
. . .
End If
Поясню, почему это так. ReadFile возвращает одно из двух
значений: TRUE, то есть 1, и FALSE, то есть 0.
Дополнение (которое, кстати, можно вычислить и таким образом:
Особенно эта ошибка трудноуловима, когда описывается
Тоже интересный глюк. Вот результат вычисления выражений, введенных в Immediate Window: ? 256 / 16 * 16 256 ? 256 \ 16 * 16 1 То есть у целочисленного деления приоритет меньше, чем у умножения и обычного деления.
Автор: |
||
| Предыдущий раздел | Следующий раздел |
| © 2004. При цитировании, пожалуйста, не забудьте поставить ссылку на оригинальную страницу. |