LINUX.ORG.RU

выраженьице

 


1

2

Привет. Как парсится вторая скобка? Зачем там '>'?

std::basic_string<TCHAR> encodedString;
encodedString.reserve(((inputBuffer.size()/3) + (inputBuffer.size() % 3 > 0)) * 4);

★★★★★

Если остаток от деления не равен нулю (то есть больше нуля), то 1, в противном же случае 0. Можно было бы добиться того же эффекта тернарным оператором ?:, но автор поленился, и так работает же, а понятность кода никому не нужна.

amomymous ★★★
()
Ответ на: комментарий от amomymous

Т.е. boolean преобразуется в int (0 или 1). Ok, понял, спасибо.

UVV ★★★★★
() автор топика
Ответ на: комментарий от amomymous

а понятность кода никому не нужна

О какой понятности речь, когда тут числа в выражениях? Черенком от лопаты этого автора надо.

Gotf ★★★
()

выражение (inputBuffer.size()/3) + (inputBuffer.size() % 3 > 0) считает сколько всего есть триплетов (групп по 3 штуки), полных («size()/3») и есть ли один последний неполный(size()%3 >0). Если опустить «>0» то получится фигня - будут складываться разноразмерные величины: триплеты и штуки. Как выше заметили возможно стоило писать (size()%3?1:0)

MKuznetsov ★★★★★
()
((inputBuffer.size()/3) + (inputBuffer.size() % 3 > 0))

Запости на govnokod.ru.

Эта хрень округляет при делении на 3 в большую сторону (кто-то не осилил ceil). Хотя, целочисленная арифметика.. в треде есть гуру производительности? Кастаните царя

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 2)
Ответ на: комментарий от UVV

Но тогда должно быть +3, а не +2.

Да просто протабулируй и убедись на примере.

i-rinat ★★★★★
()
Ответ на: комментарий от UVV

Нет. Там либо +1 либо +0 (UD included).

Пример:

(6 / 3) + (6 % 3 > 0) = 2 + (0 > 0) = 2 + 0;
ceil(6 / 3.0) = 2.0;

(7 / 3) + (7 % 3 > 0) = 2 + + (1 > 0) = 2 + 1;
ceil(7 / 3.0) = 3.0;

Предполагая, что

(int)false == 0; // 100% true
(int)true == 1; // UD

// на самом деле
(int)true != 0; // 100% true

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 2)
Ответ на: 4.5.6 от anonymous

Ладно, признаю. Леший попутал

KennyMinigun ★★★★★
()

Какая скобка? Куда парсится? Господа, помогите понять ОП!

buddhist ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.