Во многих решениях для codechef для более быстрого ввода данных я сталкивался с этим выражением, но я не могу понять это выражение, поскольку у меня нет большого опыта.Каков фактический смысл этого выражения: n = (n << 3) + (n << 1) + ch-'0 ', ch = getchar_unlocked();
inline int scan() {
int n=0;
int ch=getchar_unlocked();
while(ch <48)ch=getchar_unlocked();
while(ch >47)
n = (n<<3)+(n<<1) + ch-'0', ch=getchar_unlocked();
return n;
}
В приведенной выше функции, что цель указанной ниже выражения
n = (n<<3)+(n<<1) + ch-'0', ch=getchar_unlocked();
и каков смысл (п < < 3) + (N < < 1)
все отвечает тривиальной часть с << а как насчет «» части в этой строке это синтаксическая ошибка? –
Урок здесь не в использовании кодека для поиска хорошего кода. –
@callmecarrot - «,» является оператором запятой. Из K & R: «Пара выражений, разделенных запятой, оценивается слева направо, а значение левого выражения отбрасывается. Тип и значение результата - это тип и значение правого операнда». В основном, они использовали оператор запятой, чтобы избежать размещения фигурных скобок вокруг тела цикла while. Я должен согласиться с OliverCharlesworth, если вы ищете хороший код, избегайте кодека. – user3386109