<gram|work> про индийский код
<gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
<gram|work> bool b;
<gram|work> b = false;
<gram|work> if (b == true){...}
<gram|work> Это децкий лепет
<gram|work> ИТАК, ПЕРВОЕ МЕСТО
<gram|work> Знакомый говорит что нашел только что в коде:
<gram|work> if (b.ToString().length < 5){...}
__><gram|work> про индийский код
__><gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
__><gram|work> bool b;
__><gram|work> b = false;
__><gram|work> if (b == true){...}
__><gram|work> Это децкий лепет
__><gram|work> ИТАК, ПЕРВОЕ МЕСТО
__><gram|work> Знакомый говорит что нашел только что в коде:
__><gram|work> if (b.ToString().length < 5){...}
__>(C) пришло по аське
if (b.ToString() == "true") { .... }
else if (b.ToString() == "false") { .... }
else assert(false);
__><gram|work> про индийский код
__><gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
__><gram|work> bool b;
__><gram|work> b = false;
__><gram|work> if (b == true){...}
__><gram|work> Это децкий лепет
__><gram|work> ИТАК, ПЕРВОЕ МЕСТО
__><gram|work> Знакомый говорит что нашел только что в коде:
__><gram|work> if (b.ToString().length < 5){...}
__>(C) пришло по аське
цитата с Бора... поднимием ее до планки KDE2 под FreeBSD Голосуем :)
Re[2]: Опять индусы. На этот раз про одного гения.
int state = 0;
bool result = false;
int pos = 0;
while (state!=5)
{
char ch = str[pos++]
switch(state)
{
case 0:
if (ch =='h')
{
state = 1;
break
}
if (ch =='H')
{
state = 1;
break
}
state = 5;
breack
case 1:
if (ch =='t')
{
state = 2;
break
}
if (ch =='T')
{
state = 2;
break
}
state = 5;
breack
case 2:
if (ch =='t')
{
state = 3;
break
}
if (ch =='T')
{
state = 3;
break
}
state = 5;
breack
case 3:
if (ch =='p')
{
state = 5;
result = true;
break
}
if (ch =='P')
{
state = 5;
result = true;
break
}
state = 5;
break
}
if (result) ...
}
Re[2]: Опять индусы. На этот раз про одного гения.
__><gram|work> Знакомый говорит что нашел только что в коде: __><gram|work> if (b.ToString().length < 5){...}
Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.
Re[2]: Опять индусы. На этот раз про одного гения.
Здравствуйте, Kubyshev Andrey, Вы писали:
__>><gram|work> if (b.ToString().length < 5){...}
KA>Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.
Оооо!!! Какой простор для доработок!!! Сорри, шарпа я не знаю, вношу свое предложение в псевдокоде:
Здравствуйте, Kubyshev Andrey, Вы писали:
__>><gram|work> Знакомый говорит что нашел только что в коде: __>><gram|work> if (b.ToString().length < 5){...}
KA>Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.
Сами придумали или где-то прочитали?
Ниже код метода Boolean.ToString()
public override string ToString()
{
if (!this)
{
return"False";
}
return"True";
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Опять индусы. На этот раз про одного гения.
Здравствуйте, Кэр, Вы писали:
KA>>Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.
Кэр>Сами придумали или где-то прочитали?
у него ВСЕ русифицировано. даже операторы и те наверное имеют вид:
для (и = 0; и < Н; ++и)
{
// делать что-нибудь.
}
in c/c++ we trust!
Re[3]: Опять индусы. На этот раз про одного гения.
C>тут как раз нет ничего особоенно смешного — нормальный unrolled код проверки. Сможете написать код, работающий быстрее?
Если бы у меня были подтверждённые замерами опасения, что тут бутылочное горлышко, я бы ещё попробовал такой код:
// в зависимости от того, поддерживаем ли мы big-endian
// прямо сейчас или только собираемся когда-нибудь потом,
// #ifdef может быть заменён на
// // NOTE: endianness dependent#ifdef LITTLE_ENDIAN
static const DWORD http = 0x50545448;
#else
static const DWORD http = 0x48545450;
#endif
assert(ALIGNED(str, DWORD));
if (// исходный код остаётся в комментарии для maintainability
// (str[0] == 'h' || str[0] == 'H') &&
// (str[1] == 't' || str[1] == 'T') &&
// (str[2] == 't' || str[2] == 'T') &&
// (str[3] == 'p' || str[3] == 'P')
// NOTE: assumes ASCII
*reinterpret_cast<DWORD*>(str) &~ 0x20202020 == http
)
Конечно, предполагая, что str выравнено по DWORD’у и что EBCDIC-подобные кодировки нас не интересуют.
Если профилировка с таким кодом не покажет прироста производительности — верну «понятный» код из комментариев, «оптимизированный» засуну в комментарий вместе с пометкой, что «эту псевдооптимизацию уже пробовали и она не помогла».
Re[4]: Опять индусы. На этот раз про одного гения.
fGordon пишет:
> Кэр>Сами придумали или где-то прочитали? > > у него ВСЕ русифицировано. даже операторы и те наверное имеют вид: > > для (и = 0; и < Н; ++и) > { > // делать что-нибудь. > }
Здравствуйте, ch00k, Вы писали:
C>тут как раз нет ничего особоенно смешного — нормальный unrolled код проверки. Сможете написать код, работающий быстрее?
А что важнее? Понятность или скорость? И вообще это "Хумор", а вы про "Священные войны"
Re[4]: Опять индусы. На этот раз про одного гения.
Здравствуйте, Vadim B, Вы писали:
VB>А это вполне стандартная практика еще со времен чистого С. Не очень красиво, да, ну так и a[i++]=b[i++] с непривычки непонятно выглядит.
Ну и привычки...
Re[2]: Опять индусы. На этот раз про одного гения.
Здравствуйте, ДимДимыч, Вы писали:
ДД>Здравствуйте, mihasic, Вы писали:
VB>>>А это вполне стандартная практика еще со времен чистого С.
M>> Ну и привычки...
ДД>В до стандарта C99 в C не было стандартного типа bool, поэтому приходилось .
А при появлении идиомы "safe bool" !!a приходится писать уже и в C++.
При всем при этом у индусов размещается большая часть международных оффшорных проектов. И государство у них заботится о предоставлении льготного налогообложения бизнеса в сфере ИТ, потому что в отличие от наших проворовавшихся чиновников умеет мыслить в перспективе. И не бьют курицу, несущую золотые яйца — потому что поняли как заставить ее это делать... Грустно.
Re[3]: Опять индусы. На этот раз про одного гения.