for (int i = 0; i<2; i++){ group.PutCar(i,Car(marks[i],powers[i],costs[i],displaces[i])); }
group[2].Print();
void Group::Print(){
for (int i = 0; i<sizeof(array); i++){
array[i].Print();
}
};
operator double (){
int summ = 0;
for(int i = 0; i < sizeof(array); i++){
summ += array[i].getCost();
}
цифра три на левой части дисплея имеет код 9Е и чтобы вывести результат сложения 1 + 2 мне надо 3 как-то преобразовать в 9Е
0xfa, 0x0a, 0xb6, 0x9e, 0x4e, 0xdc, 0xfc, 0x8a, 0xfe, 0xde
. Почему вместо строки появляется мусор?
size_t xpath_formatted_size = vsnprintf(NULL, 0, xpath, arguments); char* xpath_formatted = malloc(xpath_formatted_size); vsnprintf(xpath_formatted, xpath_formatted_size, xpath, arguments);
vsnprintf(…, arguments)
меняет arguments
.Как это исправить?
char* xpath_format(const char* xpath, ...)
{
va_list arguments;
va_start(arguments, xpath);
size_t xpath_formatted_size = vsnprintf(NULL, 0, xpath, arguments) + 1;
va_end(arguments);
va_start(arguments, xpath);
char* xpath_formatted = malloc(xpath_formatted_size);
vsnprintf(xpath_formatted, xpath_formatted_size, xpath, arguments);
va_end(arguments);
return xpath_formatted;
}
--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).