Размеры объектов данных (бит)
Цель состоит в том, чтобы short и long давали возможность в зависимости от практических нужд использовать различные длины целых; тип int отражает наиболее «естественный» размер разрядной сетки конкретной машины. Как вы видите, каждый компилятор свободно интерпретирует short и long в соответствии со своими аппаратными средствами. Все, на что вы можете твердо полагаться, это то, что short не длиннее, чем long.
Константы
Константы типа int и float мы уже рассмотрели. Отметим еще только, что как обычная 123.456е–7, так и «научная» запись 0.12е3 для float является законной. Каждая константа с плавающей точкой считается имеющей тип double, так что обозначение «е» служит как для float, так и для double. Длинные константы записываются в виде 123l (от англ. long). Обычная целая константа, которая слишком длинна для типа int, рассматривается как long. Существует система обозначений для восьмеричных и шестнадцатеричных констант: лидирующий 0 (нуль) в константе типа int указывает на восьмеричную константу, а стоящие впереди 0x соответствуют шестнадцатеричной константе. Например, десятичное число 31 можно записать как 037 в восьмеричной форме и как 0x1f в шестнадцатеричной. Шестнадцатеричные и восьмеричные константы могут также заканчиваться буквой l, что делает их относящимися к типу long.
3.3.1. Символьная константа. Символьная константа – это один символ, заключенный в одинарные кавычки, как, например, 'х'. Значением символьной константы является численное значение этого символа во внутреннем машинном наборе символов. Например, в наборе символов ASCII символьный нуль, или '0', имеет значение 48, а в коде EBCDIC – 240, и оба эти значения совершенно отличны от числа 0. Написание '0' вместо численного значения, такого как 48 или 240, делает программу не зависящей от конкретного численного представления этого символа в данной машине. Символьные константы точно так же участвуют в численных операциях, как и любые другие числа, хотя наиболее часто они используются в сравнении с другими символами. Правила преобразования будут изложены позднее. Некоторые неграфические символы могут быть представлены как символьные константы с помощью эскайп-последовательностей, как, например, \n (новая строка). Хотя они выглядят как два символа, на самом деле являются одним. Кроме того, можно сгенерировать произвольную последовательность двоичных знаков размером в байт, если написать '\ooo', где ooo – от одной до трех восьмеричных цифр (0, 1,…,7), или '\xhh', где hhh – одна, две или более шестнадцатиричных цифр (0, 1, …, F). Например, в коде ASCII:
#define vtab '013' // Вертикальная табуляция #define bell '\017' // Звоночек или в шестнадцатиричном виде:
#define vtab '\xb' // Вертикальная табуляция #define bell '\x7' // Звоночек
Полный набор эскайп-последовательностей таков:
Символьная константа '\0', изображающая символ со значением 0, часто записывается вместо целой константы 0 , чтобы подчеркнуть символьную природу некоторого выражения.
3.3.2. Константное выражение. Константное выражение – это выражение, состоящее из одних констант. Такие выражения обрабатываются во время компиляции, а не при прогоне программы, и соответственно могут быть использованы в любом месте, где можно использовать константу, как, например в
#define maxline 1000 char line[maxline+1];
или
seconds = 60 * 60 * hours;
3.3.3. Строчная константа. Строчная константа – это последовательность, состоящая из нуля или более символов, заключенных в двойные кавычки, как, например, "I am a string" // Я - строка или "" // Null string – нулевая строка
Кавычки не являются частью строки, а служат только для ее ограничения. Те же самые условные последовательности, которые использовались в символьных константах, применяются и в строках; символ двойной кавычки изображается как \". С технической точки зрения строка представляет собой массив, элементами которого являются отдельные символы. Чтобы программам было удобно определять конец строки, компилятор автоматически помещает в конец каждой строки нуль-символ \0. Такое представление означает, что не накладывается конкретного ограничения на то, какую длину может иметь строка, и чтобы определить эту длину, программы должны просматривать строку полностью. При этом для физического хранения строки требуется на одну ячейку памяти больше, чем число заключенных в кавычки символов. Пример 3-1. Следующая функция strlen(s) вычисляет длину символьной строки s не считая конечный символ \0.
strlen(char s[]) // Возвращает длину строки { int i; i = 0; while (s[i] != '\0') ++i; return(i); }
Будьте внимательны и не путайте символьную константу со строкой, содержащей один символ: 'x' - это не то же самое, что "x". Первое – это отдельный символ, использованный с целью получения численного значения, соответствующего букве х в машинном наборе символов. Второе – символьная строка, состоящая из одного символа (буква х) и \0.
Описания
Все переменные должны быть описаны до их использования, хотя некоторые описания делаются неявно, по контексту. Описание состоит из спецификатора типа и следующего за ним списка переменных, имеющих этот тип, как, например,
int lower, upper, step; char c, line[1000];
Переменные можно распределять по описаниям любым образом; приведенные выше списки можно с тем же успехом записать в виде:
int lower; int upper; int step; char c; char line[1000]; Такая форма занимает больше места, но она удобна для добавления комментария к каждому описанию и для последующих модификаций. Переменным могут быть присвоены начальные значения внутри их описания, хотя здесь имеются некоторые ограничения. Если за именем переменной следуют знак равенства и константа, то эта константа служит в качестве инициализатора, как, например, в
char backslash = '\\'; int i = 0; float eps = 1.0e–5;
Если рассматриваемая переменная является внешней или статической, то инициализация проводится только один раз, согласно концепции до начала выполнения программы. Инициализируемым явно автоматическим переменным начальные значения присваиваются при каждом обращении к функции, в которой они описаны. Автоматические переменные, не инициализируемые явно, имеют неопределенные значения, (т.е. мусор). Внешние и статические переменные по умолчанию инициализируются нулем, но, тем не менее, их явная инициализация является признаком хорошего стиля. Мы продолжим обсуждение вопросов инициализации, когда будем описывать новые типы данных.
Популярное: Почему стероиды повышают давление?: Основных причин три... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (255)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |