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

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

18
Как преобразовать массив байтов в шестнадцатеричную строку в C?
У меня есть: uint8 buf[] = {0, 1, 10, 11}; Я хочу преобразовать массив байтов в строку, чтобы я мог распечатать строку с помощью printf: printf("%s\n", str); и получаем (двоеточия не нужны): "00:01:0A:0B" Любая помощь будет принята с благодарностью.
89 c  string  hex 

14
Стек растет вверх или вниз?
У меня есть этот фрагмент кода в c: int q = 10; int s = 5; int a[3]; printf("Address of a: %d\n", (int)a); printf("Address of a[1]: %d\n", (int)&a[1]); printf("Address of a[2]: %d\n", (int)&a[2]); printf("Address of q: %d\n", (int)&q); printf("Address of s: %d\n", (int)&s); Результат: Address of a: 2293584 Address of …
89 c  memory  stack 

9
Как использовать nan и inf в C?
У меня есть числовой метод, который может вернуть nan или inf, если произошла ошибка, и для целей тестирования я хотел бы временно заставить его возвращать nan или inf, чтобы убедиться, что ситуация обрабатывается правильно. Есть ли надежный, независимый от компилятора способ создания значений nan и inf в C? После 10 …
89 c  math 

2
Что такое vdso и vsyscall?
я сделал sudo cat /proc/1/maps -vv Я пытаюсь разобраться в выводе и вижу, как много разделяемых библиотек сопоставляются с сегментом отображения памяти, как и ожидалось. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037b000-7f3c00383000 …
89 c  linux  linux-kernel  kernel  vdso 


10
Разница между const и const volatile
Если мы объявляем переменную как volatileкаждый раз, когда обновляется новое значение. Если мы объявляем переменную как, constто значение этой переменной не будет изменено. Тогда в const volatile int temp; чем смысл объявления переменной, tempкак указано выше? Что произойдет, если мы объявим как const int temp?
89 c  embedded 

10
CMake не может определить язык компоновщика с C ++
Я пытаюсь запустить программу cmake hello world в Windows 7 x64 как с Visual Studio 2010, так и с Cygwin, но, похоже, ни одна из них не работает. Моя структура каталогов выглядит следующим образом: HelloWorld -- CMakeLists.txt -- src/ -- -- CMakeLists.txt -- -- main.cpp -- build/ Я делаю cd …
89 c++  c  cmake 

6
Компиляторы создают лучший код для циклов do-while по сравнению с другими типами циклов?
В библиотеке сжатия zlib (которая среди многих других используется в проекте Chromium) есть комментарий, который подразумевает, что цикл do-while в C генерирует «лучший» код для большинства компиляторов. Вот фрагмент кода, где он появляется. do { } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) …

4
Почему rand () повторяет числа гораздо чаще в Linux, чем в Mac?
Я реализовывал хэш-карту в C как часть проекта, над которым я работаю, и использовал случайные вставки для его проверки, когда заметил, что rand()в Linux кажется, что цифры повторяются гораздо чаще, чем в Mac. RAND_MAXравно 2147483647 / 0x7FFFFFFF на обеих платформах. Я сократил его до этой тестовой программы, которая создает массив …
88 c  linux  macos  random 

13
Как работает эта программа?
#include <stdio.h> int main() { float a = 1234.5f; printf("%d\n", a); return 0; } Он отображает 0!! Как такое возможно? В чем причина? Я намеренно поставил %dв printfутверждение, чтобы изучить поведение printf.
88 c++  c  memory  printf  endianness 

8
Эффективный способ поиска элемента
Недавно у меня было интервью, где мне задали « поисковый » вопрос. Вопрос был: Предположим , что существует массив (положительных) целых чисел, из которых каждый элемент является либо +1или по -1сравнению с его соседними элементами. Пример: array = [4,5,6,5,4,3,2,3,4,5,6,7,8]; Теперь найдите 7и верните его позицию. Я дал такой ответ: Сохраните …

13
Какие применения оператора препроцессора ## и какие ошибки следует учитывать?
Как упоминалось во многих моих предыдущих вопросах, я работаю через K&R, а сейчас занимаюсь препроцессором. Одна из наиболее интересных вещей - чего я никогда раньше не знал из своих предыдущих попыток изучить C - это ##оператор препроцессора. Согласно K&R: Оператор препроцессора ## предоставляет способ объединения фактических аргументов во время раскрытия …

4
Выровнены ли переменные стека по __attribute __ ((выровнены (x))) GCC?
у меня есть следующий код: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } И у меня есть следующий вывод: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac Почему адрес a[0]не кратен 0x1000? Что именно __attribute__((aligned(x)))делает? Я неправильно понял это объяснение? …

4
Как работает библиотека импорта? Детали?
Я знаю, что фанатам это может показаться довольно простым. Но я хочу прояснить это. Когда я хочу использовать Win32 DLL, обычно я просто вызываю API, такие как LoadLibrary () и GetProcAdderss (). Но в последнее время я работаю с DirectX9, и мне нужно добавить файлы d3d9.lib , d3dx9.lib и т. …
88 c++  c  windows  visual-c++ 

4
Как вывести список файлов в каталоге в программе на C?
Пытаюсь написать ftp-сервер в Linux. В этом вопросе, как я могу перечислить файлы в каталоге на терминале с помощью программы C? Возможно, я могу использовать функцию exec для запуска команды поиска, но мне нужно имя файла в виде строки для отправки клиентской программы. Как я могу это сделать? Спасибо за …
88 c  linux 

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