Константы вещественного типа
Данные константы размещаются в памяти в формате double, а во внешнем представлении могут иметь две формы:
1) с фиксированной десятичной точкой, формат записи: ±n.m, где n, m – целая и дробная части числа;
2) с плавающей десятичной точкой (экспоненциальная форма) представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (Е или е), а порядок – справа. Значение константы определяется как произведения мантиссы и числа 10, возведенного в указанную в порядке степень.
Общий формат таких констант: ±n.mE±p, где n, m – целая и дробная части числа, р – порядок; ±0.xxxE±p – нормализованный вид, например, 1,25×10–8 = 0.125E–7.
Примеры констант с фиксированной и плавающей точками:
1.0 –3.125 100е–10 0.12537е+12.
Пробелы внутри чисел не допускаются, а для отделения целой части числа от дробной используется точка. Можно опустить нулевую дробную или целую части числа, но не обе сразу, например, 1.0 « 1. или 0.5 « .5 .
В любом случае при использовании вещественных констант наличие так называемой десятичной точки обязательно.
Символьные константы
Символьная константа – это символ, заключенный в одинарные кавычки: 'A', 'х' (тип char занимает в памяти один байт).
Также используются специальные последовательности символов – управляющие (escape) последовательности:
\n | – новая строка; |
\t | – горизонтальная табуляция; |
\b | – шаг назад; |
\r | – возврат каретки; |
\v | – вертикальная табуляция; |
\f | – перевод формата (переход на новую строку); |
\\ | – обратный слеш; |
\' | – апостроф; |
\" | – кавычки; |
\0 | – символ «пусто», не путать с символом ‘0’. |
Символьная константа '\0' – это нулевой байт, каждый бит которого равен нулю.
При присваивании символьным переменным значений констант значения констант заключаются в апострофы, например:
char ss = ‘У’;
Текстовые символы непосредственно вводятся с клавиатуры, а специальные и управляющие – представляются в исходном тексте парами символов, например: \\ , \' , \" .
Примеры символьных констант: 'А', '9', '$', '\n'.
Строковые константы
Строковая константа представляет собой последовательность символов кода ASCII, заключенную в кавычки (”). Во внутреннем представлении к строковым константам добавляется пустой символ '\0', который не является цифрой 0, на печать не выводится (в таблице кодов ASCII имеет код = 0) и является признаком окончания строки.
Кавычки не являются частью строки, а служат только для ее ограничения. Строка в языке Си представляет собой массив, состоящий из символов. Внутреннее представление константы "1234ABC": '1' '2' '3' '4' 'A' 'B' 'C' '\0' .
Примеры строковых констант:
"Система", "\n\t Аргумент \n", "Состояние \"WAIT \" " .
Строковые константы еще называют строковыми литералами.
В конец строковой константы компилятор автоматически помещает нуль-символ.
Длинную строковую константу можно разбить на несколько, используя символ переноса – обратный слеш (\). Например:
“Вы поступили и \
учитесь на факультете информационных технологий \
Белорусского государственного университета \
информатики и радиоэлектроники”
Компилятор Си воспримет такую запись как единое целое, игнорируя символы обратного слеша.
ГЛАВА 4. Обзор операций
Операции, выражения
Выражения используются для вычисления значений (определенного типа) и состоят из операндов, операций и скобок. Каждый операнд может быть, в свою очередь, выражением или одним из его частных случаев – константой или переменной. Операнды задают данные для вычислений.
Знак операции – это один или более символов, определяющих действие над операндами, т.е. операции задают действия, которые необходимо выполнить. Внутри знака операции пробелы не допускаются.
Операции делятся на унарные, бинарные и тернарные – по количеству участвующих в них операндов, и выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки.
Большинство операций выполняются слева направо, например, a+b+c ® ® (a+b)+c. Исключение составляют унарные операции, операции присваивания и условная операция (?:), которые выполняются справа налево.
В языке Си используются четыре унарные операции, имеющие самый высокий приоритет, их часто называют первичными:
– операция доступа к полям структур и объединений при помощи идентификаторов «.» – точка;
– операция доступа к полям структур и объединений при помощи указателей «–>» – стрелка;
– операция [ ] индексации, используемая при декларации массива и обращении к его элементам;
– операция ( ) обращения к функции.
Первичные операции будут рассмотрены в соответствующих разделах.
Полный список операций с указанием их приоритетов приводится в прил. 2.
Арифметические операции
Обозначения арифметических операций:
+ (сложение); – (вычитание); / (деление, для int операндов – с отбрасыванием остатка); * (умножение); % (остаток от деления целочисленных операндов со знаком первого операнда – деление «по модулю»).
Операндами традиционных арифметических операций (+ – * /) могут быть константы, переменные, обращения к возвращающим значения функциям, элементы массивов, любые арифметические выражения, указатели (с ограничениями).
Порядок выполнения действий в арифметических выражениях следующий: выражения в круглых скобках; операции *, /, %; операции +, –.
Унарные операции «знак числа» (+, –) обладают самым высоким приоритетом и определены для операндов числовых типов (имеющих числовой результат), при этом «+» носит только информационный характер, «–» меняет знак операнда на противоположный (неадресная операция).
Операции *, /, % обладают высшим приоритетом над операциями +, –, поэтому при записи сложных выражений нужно использовать общепринятые математические правила: « x+y*z–a /(b+с) , т.е. использовать круглые скобки.
Операция присваивания
Формат операции присваивания:
Операнд_1 = Операнд_2 ;
Операндом_1 (левый операнд) может быть только переменная. Левый операнд операции присваивания получил название L–значение, (L–value, Left–value) – адресное выражение. Так в Си называют любое выражение, адресующее некоторый участок оперативной памяти, в который можно записать некоторое значение. Переменная – это частный случай адресного выражения.
Операндом_2 (правый операнд) могут быть: константа, переменная или любое выражение, составленное в соответствии с синтаксисом языка Си. Правый операнд операции присваивания назвали R–значение, (R–value, Right–value).
Присваивание значения в языке Cи, в отличие от традиционной интерпретации, рассматривается как выражение, имеющее значение левого операнда после присваивания. Таким образом, присваивание может включать несколько операций присваивания, изменяя значения нескольких операндов, например:
int i, j, k;
float x, y, z;
...
i = j = k = 0; « k = 0, j = k, i = j;
x = i + (y = 3) – (z = 0); « z = 0, y = 3, x = i + y – z;
Примеры недопустимых выражений:
– присваивание константе: 2 = x + y;
– присваивание функции: getch() = i;
– присваивание результату операции: (i + 1) = 2 + y;