Вопросы с тегом «c»

C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.

1
Какова семантика перекрывающихся объектов в C?
Рассмотрим следующую структуру: struct s { int a, b; }; Обычно 1 , эта структура будет иметь размер 8 и выравнивание 4. Что если мы создадим два struct sобъекта (точнее, мы запишем в выделенное хранилище два таких объекта), причем второй объект будет перекрывать первый? char *storage = malloc(3 * sizeof(struct …

5
Побитовая операция приводит к неожиданному размеру переменной
контекст Мы переносим код C, который был изначально скомпилирован с использованием 8-битного компилятора C для микроконтроллера PIC. Обычная идиома, которая использовалась для того, чтобы не допустить повторения нуля беззнаковых глобальных переменных (например, счетчиков ошибок), заключается в следующем: if(~counter) counter++; Битовый оператор здесь инвертирует все биты, и оператор верен, только если …

2
Более быстрый тест делимости, чем оператор%?
Я заметил любопытную вещь на моем компьютере. * Рукописный тест делимости значительно быстрее, чем %оператор. Рассмотрим минимальный пример: * AMD Ryzen Threadripper 2990WX, GCC 9.2.0 static int divisible_ui_p(unsigned int m, unsigned int a) { if (m <= a) { if (m == a) { return 1; } return 0; } …

1
gcc-10.0.1 специфический сегмент
У меня есть пакет R с скомпилированным кодом C, который довольно долго был относительно стабильным и часто тестировался на широком спектре платформ и компиляторов (windows / osx / debian / fedora gcc / clang). Совсем недавно была добавлена ​​новая платформа для тестирования пакета: Logs from checks with gcc trunk aka …

4
Почему функции абсолютного значения в C не принимают константные входные данные?
В C прототипом функции абсолютного значения (которая принимает число с плавающей запятой) является float fabsf( float ); Почему этот прототип не принимает постоянное значение, например так: float fabsf( float const ); fabsf не изменит значение ввода, не так ли? Если у меня есть функция, которая принимает ввод и вызывает fabsf, …

9
'\ 0' и printf () в C
Во вводном курсе C я узнал, что при хранении строки хранятся с нулевым символом \0в конце. Но что, если я хочу напечатать строку, скажем, printf("hello")хотя я обнаружил, что это не заканчивается \0следующим утверждением printf("%d", printf("hello")); Output: 5 но это кажется противоречивым, насколько я знаю, что переменные, такие как строки, хранятся …
21 c  printf  stdout  c-strings 



3
static int arr [10] адрес памяти всегда заканчивается 060
У меня есть программа переменного тока, которая выглядит так main.c #include <stdio.h> #define SOME_VAR 10 static int heap[SOME_VAR]; int main(void) { printf("%p", heap); return 0; } и выводит это, когда я запускаю скомпилированную программу несколько раз 0x58aa7c49060 0x56555644060 0x2f8d1f8e060 0x92f58280060 0x59551c53060 0xd474ed6e060 0x767c4561060 0xf515aeda060 0xbe62367e060 Почему это всегда заканчивается 060? …
17 c  arrays  memory 

1
Почему адрес __libc_start_main всегда один и тот же внутри GDB, даже если ASLR включен?
Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/firstlove/projects/org-ioslide/example/a.out Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it …
16 c  linux  gdb  libc  aslr 

3
Почему размер типа данных отличается, когда значение напрямую передается оператору sizeof?
#include <stdio.h> int main() { char a = 'A'; int b = 90000; float c = 6.5; printf("%d ",sizeof(6.5)); printf("%d ",sizeof(90000)); printf("%d ",sizeof('A')); printf("%d ",sizeof(c)); printf("%d ",sizeof(b)); printf("%d",sizeof(a)); return 0; } Выход: 8 4 4 4 4 1 Почему выходные данные отличаются для одинаковых значений?
15 c  int  sizeof 

1
Почему np.dot неточен? (n-dim массивы)
Предположим, мы берем np.dotдва 'float32'2D-массива: res = np.dot(a, b) # see CASE 1 print(list(res[0])) # list shows more digits [-0.90448684, -1.1708503, 0.907136, 3.5594249, 1.1374011, -1.3826287] Числа. Кроме того, они могут измениться: Случай 1 : срезa np.random.seed(1) a = np.random.randn(9, 6).astype('float32') b = np.random.randn(6, 6).astype('float32') for i in range(1, len(a)): print(list(np.dot(a[:i], …
15 python  c  arrays  numpy  precision 

3
Вызов функции с указателем на неконстантный и указатель на константные аргументы с тем же адресом
Я хочу написать функцию, которая вводит массив данных и выводит другой массив данных, используя указатели. Мне интересно, каков результат, если оба srcи dstуказали на один и тот же адрес, потому что я знаю, что компилятор может оптимизировать для const. Это неопределенное поведение? (Я отметил теги C и C ++, потому …

5
Почему заявления без эффекта считаются законными в C?
Простите, если этот вопрос наивен. Рассмотрим следующую программу: #include <stdio.h> int main() { int i = 1; i = i + 2; 5; i; printf("i: %d\n", i); } В приведенном выше примере, операторы 5;и i;кажутся совершенно излишними, но код компилируется без предупреждений или ошибок по умолчанию (однако, НКУ делает бросить …
13 c 

5
Сравнение немного с логическим
Скажем, у меня есть набор флагов, закодированных в uint16_t flags. Например, AMAZING_FLAG = 0x02. Теперь у меня есть функция. Эта функция должна проверить, хочу ли я изменить флаг, потому что, если я хочу это сделать, мне нужно записать на флэш-память. И это дорого. Поэтому я хочу чек, который говорит мне, …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.