Действительно, я и забыл об этой директиве. Но формально, это все же оптимизация, ведь условие - это не более, чем арифметическое выражение, и как оно вычисляется - дело компилятора. Во всяком случае в курсе теории языков программирования подобная задача входила в тему "оптимизация". Имхо, любое выражение должно быть вычислимо полностью, а то так дойдет до того, что выражение "a := 10 * b + 0 * c / 0;" корректно, потому что второй многочлен уже после умножения "очевидно" равен нулю
.
Но если окажется, что директива $B является частью
языка паскаль и обязана присутствовать в
любом его компиляторе, тогда я соглашусь, что использование подобных логических выражений в целом корректно (хотя {$B-} лучше все таки явно указать).
Цитата
В Паскале тоже были попытки ввести нечто подобное, и это как раз есть ложка дегтя в бочке меда.. Мало того, что они оставили нормальную форму (or и and) именно для полного вычисления, они еще и изобрели совершенно неудобоваримые и длинные обозначения and_then и or_else для гораздо более широко используемой краткой формы!!
Очень интересно
Нашел эти стандарты, на досуге почитаю. Мне казалось что-то подобное было а Аде, но чтоб в паскале...
Добавлено через 12 мин. Вот тут об этом вопросе пишут:
Wikipedia: Comparison of Pascal and C -> Expressions -> Logical connectives