C - универсальный компьютерный язык программирования, используемый для операционных систем, библиотек, игр и других высокопроизводительных работ. Этот тег следует использовать с общими вопросами, касающимися языка C, как определено в стандарте ISO 9899: 2018. Если применимо, включите тег, специфичный для версии, например, c99 или c90 для вопросов, связанных со старыми языковыми стандартами. 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 может быть скомпилирована для очень широкого спектра компьютерных платформ и операционных систем с очень небольшим количеством изменений в исходном коде. Язык стал доступен на очень широком спектре платформ - от встроенных микроконтроллеров до суперкомпьютеров.


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

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

  • Целевая система и версия компилятора
  • Добавьте , , , или , если ваш вопрос относится к одной конкретной версии стандарта (подробнее).
  • Если в вопросе явно не указано, какая версия используемого стандарта C, предполагается, что используется текущая версия. То есть, какая версия ИСО 9899, которую ИСО представляет в настоящее время как активная. Пожалуйста, имейте это в виду при ответе или комментировании вопросов с тегами .
  • Соответствующие флаги/переключатели передаются компилятору, ассемблеру или компоновщику, если это применимо
  • Вербальные копии предупреждений или ошибок компилятора, если это применимо. Пожалуйста, разместите их как текст, а не как скриншоты.
  • Фрагменты исходного кода идентифицируются как проблемные компилятором, если это применимо. Обратите внимание, что многие компиляторы остаются молчащими по умолчанию, пока они могут скомпилировать ваш код, поэтому вы должны явно включать предупреждения компилятора. Например, с широко используемым GCC вы всегда должны передавать -std=cxx -Wall -Wextra -pedantic в командной строке (-std=cxx, например, -std=c11).

Это C, C++ или оба?

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


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

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

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

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

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

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

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

Массивы

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

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

Струны

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

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

Препроцессор и макросы

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

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

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

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


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


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

#include <stdio.h>

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

Общение

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


C Online IDE

Выполнить C онлайн