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

C (произносится как "См.", Как и буква C) является языком программирования общего назначения, разработанным в 1969 и 1973 годах Деннисом Ритчи в Bell Telephone Laboratories для использования с операционной системой UNIX. Его конструкция обеспечивает конструкции, которые эффективно отображают типичные машинные инструкции, и поэтому они нашли долговременное применение в приложениях, которые ранее были закодированы на языке ассемблера. Это высокоэффективный процедурный язык программирования и акцент на функциях, тогда как современные объектно-ориентированные языки программирования имеют тенденцию подчеркивать данные.

Язык программирования C был основан на более ранних языках программирования B, BCPL и CPL.

Язык C и его дополнительная библиотека стандартизированы как ISO/IEC 9899, текущая версия - ISO/IEC 9899: 2018 (C17). Проект версии N2176 доступен бесплатно.

Хотя C был разработан для внедрения системного программного обеспечения, он также широко используется для разработки портативного прикладного программного обеспечения.

C является одним из наиболее широко используемых языков программирования всех времен и существует очень мало компьютерных архитектур, для которых компилятор C не существует. C сильно повлиял на многие другие популярные языки программирования, особенно C++, который начинался как расширение C. Другие языки, на которые большое влияние C были С#, Objective-C и Java.


дизайн

C - императивный (процедурный) язык реализации систем. Он был разработан для компиляции с использованием относительно простого компилятора для обеспечения низкоуровневого доступа к памяти, предоставления языковых конструкций, которые эффективно отображают машинные инструкции и требуют минимальной поддержки во время выполнения. Поэтому C был полезен для многих приложений, которые ранее были закодированы на языке ассемблера.

Несмотря на свои низкоуровневые возможности, язык был разработан для поощрения кросс-платформенного программирования. Стандартно-совместимая и портативно написанная программа C может быть скомпилирована для очень широкого спектра компьютерных платформ и операционных систем с очень небольшим количеством изменений в исходном коде. Язык стал доступен на очень широком спектре платформ - от встроенных микроконтроллеров до суперкомпьютеров.


Использование тегов

При размещении вопросов о программировании на С, пожалуйста, включите:

  • Информация о целевой системе и компиляторе. Это включает имя компилятора, версию и параметры, используемые для компиляции.
  • Если ваш вопрос специфичен для одной конкретной версии языка, добавьте или . pre-, исторические вопросы должны быть помечены .
  • Если в вопросе явно не указано, какая версия используемого стандарта C, предполагается, что используется текущая версия. То есть, какая версия ИСО 9899, которую ИСО представляет в настоящее время как активная. Пожалуйста, имейте это в виду при ответе или комментировании вопросов с тегами .

Используя совместно и

C и C++ - два разных и часто несовместимых языка. Избегайте использования обоих тегов в том же вопросе, если у вас нет веских причин.

Вопрос должен быть помечен только с помощью , если:

  • Он содержит чистый C без каких-либо следов C++ или вопросов с кодом, который может быть либо языком.
  • Код компилируется с помощью компилятора C.

Вопрос должен быть помечен только с помощью , если:

  • Он содержит код с любыми функциями C++. Хотя код может быть "C-стиль".
  • Код компилируется с помощью компилятора C++.

Вопрос должен быть помечен как , так и , если речь идет о:

  • Конкретные различия между C и C++.
  • Совместимость или портирование кода между C и C++.
  • C++, который использует библиотеки C (например, код с использованием extern "C").

Рекомендации по редактированию и модерации для сообщений с тегами и :

Чтобы отредактировать/перемаркировать/умерить вопросы с обоими тегами, рекомендуется иметь полные права на редактирование и золотой значок или золотой значок .

Если вы столкнулись с сообщением с обоими тегами, отредактируйте/повторно пометьте его, если необходимо, в соответствии с приведенными выше правилами. Если вы можете указать язык, прочитав опубликованный код, просто отредактируйте теги соответствующим образом. Избегайте запроса пользователю "это C или C++?" в комментариях, если вопрос действительно неясен.

Одним из примеров неясного вопроса является то, что пользователь явно заявляет, что он программирует на C, но отправляет сообщения или сообщения компилятора для C++. Если да, попросите разъяснить и заострить голос как неясный.

"Либо C, либо C++ являются прекрасными" мнениями OP являются сильным признаком плохого или неясного вопроса. Ответы могут отличаться в зависимости от выбранного языка. Подсказка для уточнения, близкая неясная/слишком широкая, пока ОП не разъяснит это.

Будьте внимательны при повторной пометке вопросов, когда будут опубликованы ответы, особенно если уже есть сообщения C и C++. В таких случаях теги должны быть оставлены в покое, так как изменение их приведет к тому, что опубликованные ответы недействительны.

Ответы с кодом C++ на вопрос C, который никогда не был помечен , должны быть удалены как не относящиеся к теме. Перед тем, как пометить/удалить такие ответы, проверьте историю изменений вопроса, чтобы убедиться, что в вопросе никогда не было тега C++.


Часто задаваемые вопросы (FAQ)

Типы и квалификаторы

Объявление и инициализация

Объем и продолжительность хранения

Целочисленная арифметика

Арифметика с плавающей точкой

Операторы, приоритет и порядок оценки

Массивы

Указатели и нуль

Указатели функций

Струны

Динамическое распределение памяти

Структуры и союзы

Процессор и макросы pre-

Стандартное соответствие

Неопределенное, неопределенное и определяемое реализацией поведение

Стандартная библиотека

Рекомендации и стиль


Внешние ресурсы


Программа Hello World в C

#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
    return 0;
}

Общение

Чат о C с другими пользователями


Онлайн-компиляторы