Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопрос про условия / 18 сообщений из 18, страница 1 из 1
21.01.2015, 12:56
    #38859605
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function a() {
    echo 'a';
    return true;
}

function b() {
    echo 'b';
    return true;

}

function c() {
    echo 'c';
    return true;
}

a() || b() AND c();



Почему выводит ac ?
...
Рейтинг: 0 / 0
21.01.2015, 13:08
    #38859619
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
Hett,

наверное потому что это аналог
Код: php
1.
( a() || b() ) AND c();


или в чем вопрос?
...
Рейтинг: 0 / 0
21.01.2015, 13:34
    #38859652
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
для коллекции
($a == true AND $b == true) != (($a == $b) == true)
...
Рейтинг: 0 / 0
21.01.2015, 13:38
    #38859657
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
SmeL_mdдля коллекции
($a == true AND $b == true) != (($a == $b) == true)
если объявить заранее $a и $b, то неравенство перестает срабатывать.
а если необъявлять, то уитывая что они имеют значение NULL, все вроде логично.
...
Рейтинг: 0 / 0
21.01.2015, 13:50
    #38859680
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
r uSmeL_mdдля коллекции
($a == true AND $b == true) != (($a == $b) == true)
если объявить заранее $a и $b, то неравенство перестает срабатывать.
а если необъявлять, то уитывая что они имеют значение NULL, все вроде логично.если более точно сказать то в выражении (($a == $b) == true ), ни на что не влияет просто дает полет для фантазии и возможно не правильно трактовки
...
Рейтинг: 0 / 0
21.01.2015, 14:47
    #38859747
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
HettПочему выводит ac ?
a() возвращает true и проверять что в b() не имеет смысла, один фиг true будет, вроде так работает ||
...
Рейтинг: 0 / 0
21.01.2015, 15:16
    #38859795
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
Сразу вспомнилось
Код: php
1.
fopen($f) or die()
...
Рейтинг: 0 / 0
21.01.2015, 20:30
    #38860118
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
Я чего-то с приоритетами напутал, всегда считал что AND имеет больший приоритет чем &&, щас доку открыл, оказалось наоборот. Тогда лан, выражение в первом посте понятно почему так работает, тогда почему

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function a() {
    echo 'a';
    return true;
}

function b() {
    echo 'b';
    return true;

}

function c() {
    echo 'c';
    return true;
}

a() OR b() && c();



Выполняет a() сначала ?
...
Рейтинг: 0 / 0
21.01.2015, 21:12
    #38860143
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
возможно теперь это аналог
Код: php
1.
a() OR ( b() && c() )

и наверно только a выведет, завтра проверю :)
...
Рейтинг: 0 / 0
21.01.2015, 23:28
    #38860190
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
да выводит только a(). Походу там хитро все обрабатывается, что если слева от ИЛИ единица, то остальное выполнять и не надо)
...
Рейтинг: 0 / 0
22.01.2015, 11:23
    #38860437
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
если сделать a() and b() and c() and d() будет выполнять слева на право пока не встретит false
если сделать a() or b() or c() or d() будет выполнять слева на право до первого true
если все and заменить на && логика не изменится

a() || b() && c() && d() => a
a() || b() AND c() && d() => acd
...
Рейтинг: 0 / 0
22.01.2015, 19:19
    #38861099
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
SharuPoNemnoguда выводит только a(). Походу там хитро все обрабатывается, что если слева от ИЛИ единица, то остальное выполнять и не надо)

Это не хитрость, а нормальная логика. Нет никакого смысла проверять выражение до конца, с момента когда стал доподлинно известен результат. Это же не бинарное сложение-вычитание, а сравнение. Не равно - досвидос, равно - превед.
...
Рейтинг: 0 / 0
22.01.2015, 19:23
    #38861104
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
Если бы типовая конструкция

if(isset($foo['bar']) && ($foo['bar']=='baz'))

проверялась до конца, она была бы невозможна. Если не isset, то во второй части - error. А так оно покидает опасный участок на подходе если что.
...
Рейтинг: 0 / 0
22.01.2015, 23:30
    #38861250
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
SharuPoNemnoguда выводит только a(). Походу там хитро все обрабатывается, что если слева от ИЛИ единица, то остальное выполнять и не надо)

либо не встречал, либо забыл - польская запись выражений.
...
Рейтинг: 0 / 0
22.01.2015, 23:32
    #38861251
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
alex564657498765453,

alex564657498765453польская запись выражений

Она-то тут причем? Такэ - абы шо ляпнуть
...
Рейтинг: 0 / 0
23.01.2015, 03:00
    #38861304
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
SharuPoNemnogu,

SharuPoNemnoguПоходу там хитро все обрабатывается, что если слева от ИЛИ единица, то остальное выполнять и не надо)

Это вам, #@$#@, не "походу там хитро", это на$#@ логика . Ее надо было в школе учить... Из пыхапистов, правда, в школу мало кто ходил
...
Рейтинг: 0 / 0
23.01.2015, 09:40
    #38861392
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
MikkiMousealex564657498765453,

alex564657498765453польская запись выражений

Она-то тут причем? Такэ - абы шо ляпнуть

при проведении подобного рода вычислений, в польской записи бы получилось

ИЛИ а (И б с)
пртитом что ветка в скобках может быть очень длинной.

это сразу очевидно, что даже пытаться её вычислить не надо, если а уже ИСТИНА

и тогда бы не казалась логика странной
...
Рейтинг: 0 / 0
23.01.2015, 09:41
    #38861397
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про условия
впрнинципе, тоже можно было бы и для выражений

0*(....) делать, но в языках программирования принято - только выражения с булевым типом вычисляются оптимально, остальные все полностью.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопрос про условия / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]