ка спочатку проектувалася, як Розширення для С, а такоже на Java та C #, Які запозічілі у С синтаксис.
С - мінімалістічна мова програмування. Серед ее Головня цілей: можлівість прямолінійної реализации компіляції, вікорістовуючі відносно простий компілятор, Забезпечити нізькорівневій доступ до оператівної пам'яті, формуваті лишь декілька інструкцій машинної мови для шкірного елементи мови, и не Вимагати обшірної дінамічної ПІДТРИМКИ. У результате, код З прідатній для більшості системного програмного забезпечення, Пожалуйста традіційно писати асемблера.
Незважаючі на ее нізькорівневі возможности, мова проектувалася для машіннонезалежного программирования. Сумісна зі стандартами та машіннонезалежно написана мовою C программа, может легко компілюватіся на Великій кількості апаратних платформ та операційних системз мінімальнімі змінамі. Мова стала доступною для Великої кількості платформ, від вбудований мікроконтролерів до суперкомп'ютерів.
Мова З проектувалась з розрахунком на ті, щоб використовуват у системному програмуванні. Отже, вона НЕ требует Додатковий годині на виконан перевірок різноманітніх умів, Які Ніколи НЕ відбудуться у правильно напісаній Програмі, а Забезпечує простий, прямий доступ до адреси будь которого про єкта (например, карти пам'яті, пристрою контролю регістрів), и вираженість ее Джерельна кодом может буті переведених у вигляд простої, прімітівної машинної операции.
Б ЯРН Страуструп якось написавши про неї: З Робить так, щоб вам Було легко вістріліті Собі в ногу. Іншімі словами, С дозволяє Здійснення низькі операцій, котрі часто є НЕ Бажанов, а того Чимаев помилок у коді НЕ віявляється компілятором, и не могут буті очевидними во время виконан. Если во время программирования та ПІДТРИМКИ програмного забезпечення НЕ дотримуватись низькі Суворов правил, пізніше может вінікнуті чимало проблем зі швідкодією, стабільністю та безпека програмного забезпечення. (Хоча, виною подібніх проблем най Частіше є програмісті, оскількі, С сама по Собі Забезпечує низьких рівень захисту).
З годиною Було розроблено много утіліт для Додатковий перевірок коду на наявність помилок перед компіляцією та во время его роботи. Ніщо НЕ заважає компілятору Здійснювати додаткові перевіркі кодом, що не передбачені спеціфікацією мови, однак, для Деяк системного програмного забезпечення смороду є непріпустімімі, оскількі, зменшуються ШВИДКІСТЬ виконан коду.
У відповідь на критику мови C, як сильно тіпізованої мови, Керніган та Рітчі, осла на основу філософії дизайну C: Тім НЕ Менш, C зберігає основні принципи, Який предполагает, что програмісті добро знають, что смороду роблять, и требует лишь, щоб смороду чітко давали компіляторові знаті про свои намірі.
Як и більшість імператівніх мов, засновання на традиції АЛГОЛ, C має возможности для структурного програмування и дозволяє Здійснювати рекурсії, у тієї годину, як система статічної тіпізації даних запобігає ВИНИКНЕННЯ багатьох непередбачуваніх операцій. У З увесь віконуваній код містіться у функціях. Параметри Функції всегда передаються за значенням. Передача параметрів за вказівніком реалізовується путем передачі значення вказівніка. Гетерогенні сукупності тіпів даних (структури) дозволяють пов язань типам даних буті про єднанімі и маніпулюваті ними, як Єдиним цілім.також має Такі спеціфічні Властивості:
змінні могут буті ПРИХОВАНЕ у вкладення блоках
Слабко тіпізація; например, символи могут використовуват, як цілі числа
нізькорівневій доступ до оператівної пам'яті путем превращение машини адреса вказівники
вказівники на Функції и дані підтрімують Динамічний поліморфізм
масив індексів як вторинно Поняття, візначається у термінах арифметики вказівніків
Стандартизований препроцесор C для макроозначення, включення файлу з Джерельна кодом, умовної трансляції, и т. д.
комплексна функціональність, як то I/O, маніпуляція рядками, и делегування математичних функцій бібліотекам
відносно невелика Кількість зарезервованому слів (32 у С89, и 37 у C99)
Лексічні структури, Які нагадують B более за ALGOL, Наприклад:
{...} На Відміну Від ALGOL'івського begin ... end.
знак рівності для призначення (Копіювання), як це робиться у мові Fortran
дві знаки рівності Використовують для перевіркі рівності (подібно до .EQ. у Fortran'і або одного знаку рівності у BASIC)
amp; amp; та || На Відміну Від ALGOL'івськіх and та or (ЦІМ вона семантично відрізняється від бітовіх Операторів amp; та |).
велика Кількість Операторів об'єднання, на кшт...