Язык С - Язык программирования, разработанный, как инструмент для программистов практиков в 1972 году на основе языка B. Представляет собой процедурный язык(как и Паскаль). На нем до сих пор пишутся unix-подобные ОС. Общая характеристика: Включает элементы как выского уровня(структуры данных и операторы структурного программирования, большой набор операций, указатели и функции) так и низкого(аппаратные типы данных, логические операции с битами, сдвиги, работа с адресами); Имеет эффективный, экономный и переносимый компилятор; Развитые библиотеки(как стандартная, так и дополнительные) Язык С++ является самостоятельным языком программирования, разработанным на основе С. Особенностью языка С++ является включение в язык объектно-ориентированного подхода и введение дополнительных упрощающих синтаксических конструкций.
Переменная - это именованная величина, значение которой может меняться.Перед использованием любая переменная должна быть описана. Примеры:
int a; float x;
Общий вид оператора описания:
[класс памяти][const]тип имя [инициализатор];
Класс памяти может принимать значения: auto, extern, static, register. Класс памяти определяет время жизни и область видимости переменной. Если класс памяти не указан явно, то компилятор определяет его исходя из контекста объявления
auto – автоматическая локальная переменная. Спецификатор auto может быть задан только при определении объектов блока, например, в теле функции. Этим переменным память выделяется при входе в блок и освобождается при выходе из него. Вне блока такие переменные не существуют.
extern – глобальная переменная, она находится в другом месте программы (в другом файле или далее по тексту). Используется для создания переменных, которые доступны во всех файлах программы.
static – статическая переменная, она существует только в пределах того файла, где определена переменная.
register – аналогичны auto, но память под них выделяется в регистрах процессора. Если такой возможности нет, то переменные обрабатываются как auto.
В языках С и С++ есть шесть основных типов данных:
•int (целый);(возможны арифметические операции кроме извлечения корня и деления)
•char (символьный);(сложение вычитания, по коду символа, получение кода, получение символа по коду)
•wchar_t (расширенный символьный);(
•bool (логический);(Логические операции, арифметические операции, т.к. 0-false, остальное – true)
•float (вещественный);(Все арифметические операции с делением и вычислением корня)
•double (вещественный с двойной точностью).
Первые четыре типа называют целочисленными (целыми), последние два – типами с плавающей точкой(Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка.)
Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:
•short (короткий);
•long (длинный);
•signed (знаковый);
•unsigned (беззнаковый).
Время жизни переменной — это участок программы от момента ее объявления и до конца блока
Область видимости переменной — это время ее жизни минус области перекрытия имени
Ключевое слово namespace позволяет разделить глобальное пространство имен путем создания некоторой декларативной области. По сути, пространство имен определяет область видимости. Поскольку пространство имен определяет область видимости, для доступа к определенным внутри нее объектам необходимо использовать оператор разрешения видимости
namespace имя
/**
int i;
**/
имя::i=10;
Если члены пространства имен будут использоваться часто, то для упрощения доступа к ним можно применить директиву using. Оператор using имеет две общие формы записи:
using namespace имя;
using имя::член;
Преобразования типов выполняются, если операнды, входящие в выражения, имеют различные типы. Ниже приведена последовательность преобразований.
•Если один из операндов имеет тип long double, то другой преобразуется к типу long double.
•Если один из операндов имеет тип double, то другой преобразуется к типу double.
•Если один из операндов имеет тип float, то другой преобразуется к типу float.
•Иначе, если один из операндов имеет тип unsigned long, то другой преобразуется к типу unsigned long.
•Иначе, если один из операндов имеет тип long, то другой преобразуется к типу long.
•Иначе, если один из операндов имеет тип unsigned, то другой преобразуется к типу unsigned.
•Иначе оба операнда должны иметь тип int.