if (length(BoolToStr(a))>4)
char str[] = { 't', 'r', 'u', 'e' };
if (str.length == 4) {
if (str[0] == "t" && str[1] == "r" && str[2] == "u" && str[3] == "e") {
}
}
if (str.length == 4) {
if (str[0] == "t" && str[1] == "r" && str[2] == "u" && str[3] == "e") {
}
}
Ну это совсем не такое, это заворачивание четырёх символов в uint32 чтобы их можно было сравнить одной инструкцией. Причём с константой, потому что скорее всего выражение считается на этапе компиляции.
С первой ссылкой облажался - https://trac.nginx.org/nginx/browser/nginx/src/http/ngx_http_parse.c#L70
Не, ну это не основной вариант.
Это на крайний случай для систем с другим порядком байтов (константы наизнанку в компайл-тайме в чистом С не вывернуть), или для систем со строгим алайнментом (там если незалайненый адрес поконвертить к uint32_t у которого требования к алайнменту, то будет как минимум просадка производительности (некоторые хитрожопые процессоры несмотря на жёсткие требования к алайнменту по мануалу, умудряются запрашивать обе ячейки на которые разъехалась переменная, и склеивать их, но конвейер всё это время стоит), как максимум AV - например на АРМах на которые грозится перейти эппл (либо они изобретают компилятор с автоматической проверкой алайнмента, либо каждая софтина которая не имеет обработки крайнего случая как в nginx превращается в бомбу замедленного действия, грозящую в любой момент поехать по пизде... что впрочем для маков характерно).
Это на крайний случай для систем с другим порядком байтов (константы наизнанку в компайл-тайме в чистом С не вывернуть), или для систем со строгим алайнментом (там если незалайненый адрес поконвертить к uint32_t у которого требования к алайнменту, то будет как минимум просадка производительности (некоторые хитрожопые процессоры несмотря на жёсткие требования к алайнменту по мануалу, умудряются запрашивать обе ячейки на которые разъехалась переменная, и склеивать их, но конвейер всё это время стоит), как максимум AV - например на АРМах на которые грозится перейти эппл (либо они изобретают компилятор с автоматической проверкой алайнмента, либо каждая софтина которая не имеет обработки крайнего случая как в nginx превращается в бомбу замедленного действия, грозящую в любой момент поехать по пизде... что впрочем для маков характерно).
>например на АРМах на которые грозится перейти эппл
А Эппл я погляжу впереди планеты всей. Снова. Сафари с собственными стандартами им было мало.
А Эппл я погляжу впереди планеты всей. Снова. Сафари с собственными стандартами им было мало.
А никто не говорил что different в think different значит лучше.
кейс-конверсии нет, индусы повалят.
У меня как-то беларусы сломали сервер, передав в качестве идентификатора строку из 12 символов, и все символы были null. Такого подвоха никто не ожидал...
У меня как-то беларусы сломали сервер, передав в качестве идентификатора строку из 12 символов, и все символы были null. Такого подвоха никто не ожидал...
яб их iptables с geoip забанил бы, на всяк - весь регион.
>строку из 12 символов, и все символы были null
А они профессионалы, я погляжу!
А они профессионалы, я погляжу!
вывод результата каждой строчки в консоль забыл.
function equalBoolean(a: boolean) { if(a.toString() === true.toString) { return true else if(a.toString() === false.toString) return false; }
Ты одну скобочку пропустил. Сломано.
Какое-то ненадежное условие, вот если бы
if (a == true && a != false)
if (a == true && a != false)
Для верности проверь ещё валидный ли адрес у a, если оно на стеке, то не покорраптило ли стек, а заодно совпадает ли размерность и порядок байтов в системе откуда пришло а с твоей, ну и конечно же проверить ещё раз сразу после первой проверки на предмет возможного рейс кондишена, а предварительно протрассировать какому бинарнику принадлежит а, на предмет того что какая-то добрая душа могла его взять и выгрузить перед проверкой...
С++ делает из человека знатного параноика.
С++ делает из человека знатного параноика.
Ты забыл добавить предварительную сборку со включенными PIE и прочим hardened барахлом.
а как же if (a == -34676734525654745745)?
а это что такое?
Потестил: если а = true, то возвращает false, если а false, то тоже возвращает false.
if (expression)
{
return true;
}
else
{
return false;
}
{
return true;
}
else
{
return false;
}
Забыл ещё
else
{
throw new Exception("Invalid boolean value");
}
else
{
throw new Exception("Invalid boolean value");
}
if (+a) {return true;}
else {return false;}
else {return false;}
++i--
Внезапно, предположу когда это возможно "имеет смысл": в том же C# есть Nullable, который вот не очень кастится к bool. Если на пальцах, то в этом случае переменная а может содержать три значения: true, false, null.
О, помнится я час где-то прогорел с этой фигней пока искал в чем ошибка. Отладчика, зараза, не было)
Чтобы написать коммент, необходимо залогиниться