--to-command
-- это прикольно.tar -xzvOf archive.tar.gz | tar -xzvO | tar -xzvO | … | tar -xzvO | tar -xzv
Зачем он для такой строчки на 69, 70ой строчке добавляет к j такую странную константу.
-fdump-tree-all
(фиг знает, как сделать это на godbolt.org, я проверял локально), то уже в самом первом дампе можно увидеть, что if (arr[j - 1] > arr[j])
превращается в это:if (*(arr + ((sizetype) j + 1073741823) * 4) > *(arr + (sizetype) ((unsigned int) j * 4)))
j + 1073741823
превратилось в add r3, r3, #1073741824
subs r3, r3, #1
j + 1073741824 - 1
. После умножения на 4 старшие два бита j теряются, но в чём смысл использования 30-битной -1 вместо 32-битной -- мне непонятно.sub r3, r3, #1
. Ещё интересно, что даже с -O2
эта константа остаётся в сгенерированном коде, а исчезает только с -Os
. Выглядит как регрессия. d
не инициализирован, а в том, что колическтво итераций цикла вывода массива d
не зависит от того, сколько элементов было занесено в этот массив. Правильным решением было бы как-то их связать, например так:int i = 0, n;
while (piece != NULL)
{
d[i] = piece;
piece = strtok(NULL, " ");
i++;
}
n = i;
for (i = 0; i < n; i++) {
if(i%2==0)
printf("%s ",d[i]);
}
ошибка возникает на моменте сдвига элементов. Как ее исправить?
data = (Student*)realloc(data, count * sizeof(Student)); for (int i = count; i > offset; i--) { data[i] = data[i - 1]; }
count
элементов, то последний имеет индекс count - 1
. Этот цикл должен быть таким: for (int i = count - 1; i > offset; i--)
Почему при выполнение данной команды ОС продолжает работать до момента перезагрузки?
rm -rf /
файлами не будет освобождено и их содержимое не будет потеряно, пока они не будут закрыты. Можно будет продолжать читать и писать в них, в т.ч. ядро будет продолжать использовать их для реализации механизмов виртуальной памяти. в функции main, почему то выводит мусор
%32[^,]
может записать до 33 байт (32 символа из файла + 0), что не влезет в такое поле: char title[32];
. Если файл в кодировке utf-8, то байтов в полях может быть больше чем символов. нигде не нашел описания ни драйвера, ни устройства чтобы самостоятельно там чем-то управлять.
Как поменять порядок битов в байте C?
Если в официальной доке с++ где-то написано "переопределение возможно тогда и только тогда, когда есть virtual у метода базового класса"
то почему именно так?
Почему-то как я не стараюсь всё записывается только в sportsmens[i].full_name,
fscanf
, а поля в твоём файле разделены пробелами, формат fscanf
должен включать в себя пробелы чтобы избавиться от разделителей. Кроме того, имеет смысл проверить, что setlocale
возвращает не-NULL, иначе он не повлияет на десятичный разделитель (и %f
не сможет прочитать число с плавающей точкой записанное как 12,12). error C2835: user-defined conversion 'operator`double'' takes no formal parameters
operator double (int limit)
невозможна. Вторая ошибка -- это следствие первой.Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(int limit);.
Но не получается
zeroCounter
как я понял нужен для реализации шага "Remove leading "0" from X'", но эта реализация неправильная. К тому же она находится вне цикла while ( X != "0" )
.for (b in bits of X) // msb to lsb
говорит о том, что b должен пробегать двоичные цифры, от старшего разряда к младшему, в формуле R = 2*R + b
фигурирует значение разряда, а не его индекс, как в твоём коде.R, как я понимаю, должна быть очередная десятичная цифра получающегося числа?