Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Ципихович Эндрю, Дело в том, что описание логических операторов, которое вы привели, никаким боком не относится к вопросу "Как VB обрабатывает логические условия, все ли их части выполняет, или же прекращает на полпути если на этом полпути конечный ответ становится очевидным?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2010, 20:24 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
там конечно идет анализ, что возвращает msgbox If len("строка")<>0 AND msgbox("тра-ля-ля")= число then но сути это не меняет. это даже не избыточно, это противоречит математической логике и сбивает с толку, так уверен, что если получил вывод msgbox, то строка len("строка")<>0. по крайней мере, не припомню такой экзотики в других языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2010, 22:43 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
В оригинале было len("строка"), а не len(строка) т.е. "строка" это константа и её длина равна 6 и оно не равно 0. Следовательно первое условие выполняется в любом случае. А там где msgbox, там результат зависит от того, какую кнопку нажал юзер в ответ на всплывшее сообщение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2010, 22:45 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Тёмa i koэто противоречит математической логике и сбивает с толку меня будет сбивать с толку периодическое НЕвыполнение функции в выражении, потому что функция может выполнять какие-то действия, которые обязательно должны быть выполнены. А если хочется оптимизации - вложенный иф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2010, 22:52 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Sub test() If 1 = 2 And MsgBox("избыточные вычисления") Then End If End Sub В отличии от Си визуал бейсик проводит все вычисления, даже если они избыточны результат уже известен, как в данном примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2010, 22:58 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Djon PlayerВ оригинале было len("строка"), а не len(строка) т.е. "строка" это константа и её длина равна 6 и оно не равно 0. Следовательно первое условие выполняется в любом случае. А там где msgbox, там результат зависит от того, какую кнопку нажал юзер в ответ на всплывшее сообщение. каюсь - некорректно написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2010, 23:12 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Тёмa i koтам конечно идет анализ, что возвращает msgbox If len("строка")<>0 AND msgbox("тра-ля-ля")= число then но сути это не меняет. это даже не избыточно, это противоречит математической логике и сбивает с толку, так уверен, что если получил вывод msgbox, то строка len("строка")<>0. по крайней мере, не припомню такой экзотики в других языках.Математической логике это не противоречит. И вообще, прими как данность - Бейсик вычисляет все элементы логического выражения прежде чем делать над ними логические операции. Отлито из бронзы, руками не трогать. Как с логическими выражениями работают другие языки - совершенно не важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2010, 04:27 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Shocker.Proменя будет сбивать с толку периодическое НЕвыполнение функции в выражении, потому что функция может выполнять какие-то действия, которые обязательно должны быть выполнены. А если хочется оптимизации - вложенный иф.Угадай, что произойдет вот тут и в каком случае будет выполнятся f2(): Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2010, 04:39 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Shocker.ProТёмa i koэто противоречит математической логике и сбивает с толку меня будет сбивать с толку периодическое НЕвыполнение функции в выражении, потому что функция может выполнять какие-то действия, которые обязательно должны быть выполнены. А если хочется оптимизации - вложенный иф. Справедливости ради следует отметить, что раз уж мы для гарантии невыполнения лишнего делим на два ифа, то и для гарантии выполнения по той же логике будем выполнять не в условии, а вынесем до него ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2010, 13:58 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
хотел ещё спросить, а есть ли в VBA ещё такие "подводные камни"? если можно, без эмоций, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2010, 22:42 |
|
||
|
маненькый вопросик про вычисления логических выражений
|
|||
|---|---|---|---|
|
#18+
Тёмa i koхотел ещё спросить, а есть ли в VBA ещё такие "подводные камни"? если можно, без эмоций, пожалуйста. Мы тут как раз эмоционально обсуждаем, считать это подводным камне или нет... Что значит "такие"? Непривычные с точки зрения другого языка? Кому-то и выражение a = b = с покажется дикостью.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2010, 23:19 |
|
||
|
|

start [/forum/topic.php?fid=60&gotonew=1&tid=2159437]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 9ms |
| total: | 147ms |

| 0 / 0 |
