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

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


7
Каков размер long в 64-битной Windows?
Не так давно кто-то сказал мне, что longна 64-битных машинах нет 64 бит, и я всегда должен их использовать int. Это не имело смысла для меня. Я видел, как документы (например, на официальном сайте Apple) говорят, что longони действительно 64-битные при компиляции для 64-битного процессора. Я посмотрел, что это было …
137 c++  c  windows  64-bit  porting 

12
Какая польза от прерывания, если ... else if конструирует с предложением else?
В нашей организации есть обязательное правило кодирования (без каких-либо объяснений), которое: if… else if конструкции должны быть завершены с помощью условия else Пример 1: if ( x < 0 ) { x = 0; } /* else not needed */ Пример 2: if ( x < 0 ) { x …
136 c  misra 

12
На каких платформах есть что-то кроме 8-битного символа?
Время от времени кто-то на SO указывает, что char(иначе, «байт») не обязательно 8 бит . Кажется, что 8-битный charпочти универсален. Я бы подумал, что для основных платформ необходимо иметь 8-битную версию, charчтобы обеспечить ее жизнеспособность на рынке. И сейчас, и исторически, какие платформы используют charне 8 бит, и почему они …
136 c++  c  cross-platform 

9
Почему функции C не могут быть искажены по имени?
Недавно у меня было интервью, и был задан один вопрос: в чем смысл использования extern "C"кода на C ++? Я ответил, что это использование функций C в коде C ++, так как C не использует искажение имен. Меня спросили, почему C не использует искажение имен и, честно говоря, я не …
136 c++  c  name-mangling  extern-c 

6
Как позвонить C из Swift?
Есть ли способ вызвать подпрограммы C из Swift? Многие библиотеки iOS / Apple предназначены только для C, и я все еще хотел бы иметь возможность вызывать их. Например, я хотел бы иметь возможность вызывать библиотеки времени выполнения objc из swift. В частности, как вы соединяете заголовки iOS C?
136 c  swift 

8
Какова цель использования -pedantic в компиляторе GCC / G ++?
Эта записка говорит: -ansi: указывает компилятору реализовать опцию языка ANSI. Это отключает определенные «функции» GCC, которые несовместимы со стандартом ANSI. -pedantic: используется в сочетании с -ansi, это говорит компилятору строго придерживаться стандарта ANSI, отклоняя любой код, который не соответствует. Перво-наперво: Какова цель -pedanticи -ansiпараметры компилятора GCC / G ++ (я …
136 c++  c  gcc  g++ 


5
Не могу понять, как рассчитать квадрат числа
Я нашел функцию, которая вычисляет квадрат числа: int p(int n) { int a[n]; //works on C99 and above return (&a)[n] - a; } Возвращает значение n 2 . Вопрос в том, как это сделать? После небольшого тестирования я обнаружил, что между (&a)[k]и (&a)[k+1]есть sizeof(a)/ sizeof(int). Это почему?

4
«Int main (vooid)»? Как это работает?
Недавно мне пришлось набрать небольшую тестовую программу на Си, и в процессе я допустил орфографическую ошибку в основной функции, случайно использовав vooidвместо void. И все же это все еще работало. Сокращая его до самой маленькой полной версии, я получил: int main (vooid) { return 42; } Это действительно compile ( …
135 c  syntax  main 

8
Преобразование без знака в C - всегда ли это безопасно?
Предположим, у меня есть следующий C-код. unsigned int u = 1234; int i = -5678; unsigned int result = u + i; Какие неявные преобразования здесь происходят, и безопасен ли этот код для всех значений uи i? (Безопасно, в том смысле, что, хотя результат в этом примере будет переполнен до …
135 c  type-conversion 

30
Какой твой любимый трюк на C? [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …
134 c 

3
Как этот кусок кода определяет размер массива без использования sizeof ()?
Проходя через несколько вопросов на собеседовании с C, я нашел вопрос о том, как найти размер массива в C без использования оператора sizeof, со следующим решением. Это работает, но я не могу понять, почему. #include <stdio.h> int main() { int a[] = {100, 200, 300, 400, 500}; int size = …

9
Может ли рекурсивная функция быть встроенной?
inline int factorial(int n) { if(!n) return 1; else return n*factorial(n-1); } Когда я читал это , обнаружил, что приведенный выше код приведет к «бесконечной компиляции», если не будет правильно обработан компилятором. Как компилятор решает, встроить функцию или нет?

9
самореферентное определение структуры?
Я не писал C очень долго, и поэтому я не уверен, как мне следует делать подобные рекурсивные вещи ... Я хотел бы, чтобы каждая ячейка содержала другую ячейку, но я получаю сообщение об ошибке строки "поля 'child' имеют неполный тип". Что происходит? typedef struct Cell { int isParent; Cell child; …
134 c  recursion  struct  typedef 

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