Десятичная константа – это последовательность из одной или нескольких десятичных цифр (от 0 до 9).

Восьмеричная константа представляется цифрами от 0 до 7, причем первой цифрой числа должен быть 0.

Шестнадцатеричная константа содержит впереди себя символы "0x" или "0X" и одну или более цифр от 0 до 9 и букв A(a) – 10, B(b) – 11, C(c) – 12, D(d) – 13, E(e) – 14 и F(f) – 15.

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

Константа с плавающей точкой – это действительное десятичное число. Если знак минус перед константой отсутствует, она считается положительной. В компьютере константа с плавающей точкой представляется в формате двоичного числа с плавающей точкой (в виде знака числа, мантиссы и порядка).

Константа с плавающей точкой записывается в двух форматах:

·  в виде действительного числа с целой и дробной частью;

·  в экспоненциальной форме.

В первом формате разделителем между целой частью и дробной частью служит символ ".". Число в экспоненциальной форме содержит две компоненты: целое или действительное десятичное число – мантиссу и целочисленный десятичный порядок. В качестве разделителя между мантиссой и порядком используется одни из символов: "e" или "E".

Символьная константа – это буква, цифра, знак пунктуации или специальный символ, заключенный в одиночные апострофы – символ "'".

Символьная строка – это последовательность символов, заключенная в двойные кавычки. В компьютере символьная строка представляется как последовательность байт. Длина этой последовательности равна числу символов в символьной строке плюс 1, поскольку в конец строки автоматически добавляется нулевой символ "\0", служащий признаком ее окончания.

НЕ нашли? Не то? Что вы ищете?

3.10. Объявление простых переменных

В C определены следующие типы простых переменных:

Ключевое слово

Тип

char

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

int

Целое число.

float

Число с плавающей точкой одинарной точности.

double

Число с плавающей точкой двойной точности.

Для простых переменных можно задать следующие квалификаторы, уточняющие тип простой переменной:

Ключевое слово

Тип

short

Короткое int.

long

Длинное int, float или double.

signed

int или char со знаком (первый бит выделяется под знак).

unsigned

int или char без знака.

const

Значение переменной не может быть изменено в программе.

volatile

Значение переменной может изменяться в программе.

Если тип переменной опущен, предполагается int (в этом случае должен быть обязательно задан один из квалификаторов).

При объявлении переменной ей можно задать начальное значение (инициализировать переменную). Инициализация переменной имеет следующий синтаксис:

идентификатор=константа

где идентификатор – это идентификатор переменной, а константа – значение (числовое и символьное), которое присваивается переменной с указанным идентификатором.

По умолчанию в C выполняются следующие соглашения:

1. Если указан только квалификатор long или short, а описание типа опущено, то предполагается, что тип – int.

2. Если опущены квалификаторы signed или unsigned, то для char предполагается signed.

3.11. Арифметические операторы и операторы присваивания

Арифметические операторы используются для выполнения арифметических операций над константами и переменными. Комбинация переменных, числовых констант и вызовов функций, объединенных арифметическими операторами, называется арифметическим выражением.

Результат вычисления арифметического выражения может быть присвоен переменной с помощью оператора присваивания – символа "=".

В языке C определены следующие арифметические операторы:

Оператор

Действие

+

Присваивание переменной положительного значения.

-

Присваивание переменной отрицательного значения.

+

Сложение.

-

Вычитание.

*

Умножение.

/

Деление.

%

Определение остатка от деления целых чисел.

++

Увеличение значения переменной на единицу.

--

Уменьшение значения переменной на единицу.

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

Для выполнения арифметических операций в C задана следующая приоритетность (в порядке убывания приоритета):

·  присвоение знака числу и операции увеличения/уменьшения значения на 1;

·  умножение, деление и определение остатка;

·  сложение и вычитание.

В языке C оператор присваивания может быть простым (символ "=") или составным (знак операции и символ "="). В последнем случае запись:

переменная знак-операции = выражение

эквивалентна следующей записи

переменная = переменная знак-операции (выражение)

где знак операции – один из следующих арифметических операторов: "*", "/", "%", "+" и "-".

3.12. Преобразования типов

При выполнении арифметических операций или операции присваивания переменные и константы, участвующие в этих операциях могут быть разных типов, например в следующей последовательности операторов:

double y;

float x;

y = x + 5;

суммируются переменная x, имеющая тип float и константа целого типа -5, а результат суммирования присваивается переменной y типа double.

В таких случаях в C перед выполнением операций происходит преобразование операндов из одного типа в другой.

Для арифметических операций при этом действуют следующие правила:

1.   Типы char и short преобразуются в int.

2.   Тип float преобразуется в double.

3.   Если один из операндов имеет тип double, то другой преобразуется в double, и результат имеет тип double.

4.   Если один из операндов имеет тип long, то другой преобразуется в long, и результат имеет тип long.

5.   Если один из операндов имеет тип unsigned, то другой преобразуется в unsigned и результат имеет тип unsigned.

При присваивании значение правой части преобразуется к типу левой. Этот тип и является типом результата. При этом преобразование происходит по следующим правилам:

6.   Символьные переменные преобразуются в целые либо со знаковым расширением, либо без него, как указано выше. При обратном преобразовании int в char старшие биты просто отбрасываются.

7.   Типы float и double преобразуются в int отбрасыванием дробной части и округлением (для double). При обратном преобразовании сначала происходит преобразование в тип long, а затем преобразование к плавающему типу (возможно с потерей точности).

8.   Тип double преобразуется во float с помощью округления. Обратное преобразование происходит без потери точности.

9.   Длинные целые преобразуются в более короткие целые и в переменные типа char посредством отбрасывания старших битов. При обратном преобразовании данные дополняются нулями слева.

10. При преобразовании типа unsigned в тип signed старший бит рассматривается как знаковый, а при обратном преобразовании старший бит рассматривается как часть числа.

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

(имя-типа) выражение

где выражение преобразуется к указанному типу по правилам преобразования, которые изложенным выше и присваивается некоторой фиктивной переменной указанного типа, которая затем используется вместо всего выражения. Приоритет выполнение этой операции ниже, чем присвоение знака числу, но выше, чем у арифметических операций. Например, (int) (3.8 + 5) преобразует сумму константы 3.8 типа double и 5 типа int в выражение целого типа (скобки необходимы, поскольку приоритет операции преобразования типа выше, чем у операции сложения).

3.13. Стандартная библиотека языка C

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

#include <головной-файл>

где головной-файл – имя головного файла для группы функций (например, math. h для математических функций).

Оператор #include для группы функций должен быть задан до их использования в программе (принято обычно все операторы #include для вызова разделов библиотек размещать в самом начале программы).

3.14. Форматный вывод данных в C

Функции ввода-вывода определены в головном файле stdio. h.

Функция форматного вывода printf() стандартной библиотеки C выводит символы и формирует и выводит задаваемые аргументами значения на дисплей. Функция имеет переменное число аргументов и вызывается следующим образом:

printf("строка-формата" [, аргумент-1 [,аргумент-2...]])

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

Простая спецификация формата содержит только символ "%" и символ выводимого типа. Основные символы типов приведены в следующей таблице:

Сим-вол

типа

Тип

аргумента

Вид печати

d

int

Десятичное целое число.

i

int signed

Десятичное целое число со знаком.

u

int unsigned

Десятичное целое число без знака

o

int

Восьмеричное число без знака (без 0 в начале числа).

x, X

int

Шестнадцатеричное число без знака (без 0x или 0X в начале).

c

int или char

Единичный символ после преобразования в unsigned char.

s

char *

Строка символов.

f

float или double

Десятичное число с точкой и со знаком "-" (если число отрицательное).

e, E

float или double

Десятичное число в экспоненциальной форме (целая часть, дробная часть и, после e или E показатель степени со знаком).

g, G

float; double

В зависимости от величины и точности числа выводится либо по типу f, либо по типам e или E.

%

%

Выводится символ "%".

Если число спецификаций формата больше числа аргументов, излишние спецификации игнорируются. В обратном случае результат вывода не определен.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4