Иконка ресурса

Furrien Mod 2.1

Нет прав для скачивания

w0w

Сообщения
985
Реакции
1.910
w0w, пруфы? Я лично сомневаюсь в такой реализации.

Оператор ИЛИ возвращает истину, если хотя бы одно из условий истина. Если представить это математически (логическим сложением, разумеется), то хотя бы одна 1 (как истина) в сумме с любыми другими операндами уже даст 1 в любом случае.
С логическим умножением всё также - при умножении если хоть один операнд будет иметь 0 (ложь), то результатом будет 0, ведь любое число умножить на 0 - будет 0.

Такая реализация математически обоснована хотя бы.
Ну а я о чём говорю? Если хоть 1 совпадёт то выполнится условие. Соответственно, если у нас первое условие true то и код выполняется и дальше по условиям не будет идти, ибо уже совпало 1.
 
Сообщения
15
Реакции
6
w0w, так проблема в том, что все условия будут проверены тогда. А если их проверять поочередно, то предыдущее отсекает следующее.

В этом случае проверятся все условия в любом случае без исключения и всегда:
C++:
if(!is_user_connected(iAttacker) || g_bIsFurrien[iAttacker] || iVictim == iAttacker)
    return;
А в этом нет:
C++:
if(!is_user_connected(iAttacker))
    return;

if(g_bIsFurrien[iAttacker])
    return;

if(iVictim == iAttacker)
    return;
То есть если ID=iAttacker не приконнекшен, то выполнение кода будет далее прекращено. Со вторым условием также.
То есть в каких-то моментах это дает оптимизацию.
 
Сообщения
278
Реакции
214
В этом случае проверятся все условия в любом случае без исключения и всегда:
Это ведь легко проверить: сделайте условия из трех функций, которые будут что-нибудь писать в консоль и возвращать true/false и посмотрите
 

w0w

Сообщения
985
Реакции
1.910
И правда, получается что всё же проверяет все, печально конечно, думал не проверяет следующие условия если совпало одно условие.
 
Сообщения
15
Реакции
6
voed, Код:
C++:
#include <amxmodx>

new g_iValue[3];

public plugin_init()
{
    if((g_iValue[0] = 1) || (g_iValue[1] = 0) || (g_iValue[2] = 1)) {}
  
    server_print("%i | %i | %i", g_iValue[0], g_iValue[1], g_iValue[2]);
}
123.png

Всё-таки да, оба варианта работают одинаково.
13 Мар 2019
Второе условие сразу же вызвало прекращение дальнейшей проверки третьего условия, соответственно, единица не присвоилась третьему элементу массива, всё визуально видно на скрине.

P.S Аналогия с математическим представлением здесь не работает.
 
Сообщения
131
Реакции
45
Предупреждения
5
У кого нибудь стоит данный мод? Работает стабильно?
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу