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

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


2
В режиме выпуска поведение кода не такое, как ожидалось
Следующий код генерирует разные результаты в режиме отладки и в режиме выпуска (с использованием Visual Studio 2008): int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if( result > 255 ) { result = 255; } …

3
Почему оптимизирован простой цикл, когда ограничение составляет 959, но не 960?
Рассмотрим этот простой цикл: float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } Если вы компилируете с помощью gcc 7 (снимок) или clang (ствол), -march=core-avx2 -Ofastвы получите что-то очень похожее на. .LCPI0_0: .long 1148190720 # float …
131 c  gcc  optimization  clang 

16
Как кодировать (декодировать) base64 на C?
У меня есть двоичные данные в переменной без знака. Мне нужно преобразовать их в PEM base64 в c. Я посмотрел в библиотеке openssl, но не нашел никакой функции. Есть ли у кого-нибудь идеи?
131 c  base64 

4
Какие каталоги GCC включают по умолчанию?
Когда я компилирую очень простой исходный файл с помощью gcc, мне не нужно указывать путь к стандартным включаемым файлам, таким как stdio или stdlib. Откуда GCC знает, как найти эти файлы? Есть ли /usr/includeвнутри него путь, или он получит пути от других компонентов ОС?
131 c++  c  linux  gcc  include-path 

12
Почему в C нет беззнаковых чисел с плавающей запятой?
Я знаю, вопрос кажется странным. Программисты иногда слишком много думают. Пожалуйста, прочтите ... В CI много использую signedи unsignedцелые числа. Мне нравится, что компилятор предупреждает меня, если я делаю такие вещи, как присвоение целого числа со знаком беззнаковой переменной. Я получаю предупреждения, если сравниваю подписанные с целыми числами без знака …

4
преобразование bool в int
Насколько портативно это преобразование. Могу ли я быть уверен, что оба утверждения верны? int x = 4<5; assert(x==1); x = 4>5; assert(x==0); Не спрашивайте почему. Я знаю, что это некрасиво. Спасибо.
131 c++  c  c99 


14
Почему указатели на функции и указатели данных несовместимы в C / C ++?
Я читал, что преобразование указателя функции в указатель данных и наоборот работает на большинстве платформ, но не гарантируется. Почему это так? Разве оба не должны быть просто адресами в основной памяти и, следовательно, быть совместимыми?

7
Что такое нормализованный UTF-8?
Проект ICU (который теперь также имеет библиотеку PHP ) содержит классы, необходимые для нормализации строк UTF-8, чтобы упростить сравнение значений при поиске. Однако я пытаюсь понять, что это значит для приложений. Например, в каких случаях мне нужно «Каноническая эквивалентность» вместо «эквивалентности совместимости» или наоборот?

8
Размещение объявления переменной в C
Я долго думал, что в C все переменные нужно объявлять в начале функции. Я знаю, что в C99 правила такие же, как в C ++, но каковы правила размещения объявления переменных для C89 / ANSI C? Следующий код успешно компилируется с помощью gcc -std=c89и gcc -ansi: #include <stdio.h> int main() …
130 c  declaration  c89 

17
«#Include» текстовый файл в программе на C как char []
Есть ли способ включить весь текстовый файл в виде строки в программу C во время компиляции? что-то вроде: file.txt: This is a little text file main.c: #include <stdio.h> int main(void) { #blackmagicinclude("file.txt", content) /* equiv: char[] content = "This is\na little\ntext file"; */ printf("%s", content); } получение небольшой программы, которая …

5
Как создать простой make-файл для gcc в Linux?
У меня есть три файла: program.c, program.hи headers.h. program.cвключает program.hи headers.h. Мне нужно скомпилировать это в Linux с помощью компилятора gcc . Я не знаю, как это сделать. Netbeans создал один для меня, но он пуст.
130 c  gcc  makefile 

6
Почему целочисленное переполнение на x86 с GCC вызывает бесконечный цикл?
Следующий код переходит в бесконечный цикл GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } Итак, дело в следующем: подписанное целочисленное …
129 c++  c  gcc  x86  undefined-behavior 

15
Концепция пустого указателя в программировании на C
Можно ли разыменовать указатель void без преобразования типов в языке программирования C? Кроме того, есть ли способ обобщить функцию, которая может получать указатель и сохранять его в указателе void, и, используя этот указатель void, можем ли мы создать обобщенную функцию? например: void abc(void *a, int b) { if(b==1) printf("%d",*(int*)a); // …
129 c  void-pointers 

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