Программирование на Objective-C 2.0
Шрифт:
Если восьмеричная или шестнадцатеричная целая константа без суффик-сов слишком велика, чтобы уместиться в тип signed int, она интерпретируется как unsigned int. Если она слишком велика, чтобы уместиться в тип unsigned int, она интерпретируется как long int, и если она не умещается в этот тип, то интерпретируется как unsigned long int. Если она не умещается в unsigned tong int, то интерпретируется как long tong int. И, наконец, если она слишком велика для tong long int, то интерпретируется как unsigned tong long int. Константы с плавающей точкой
Константа с плавающей точкой состоит из последовательности десятичных цифр, десятичной
Если в конце константы с плавающей точкой добавлены буква е (или Е) и целое число (с необязательным знаком), константа имеет экспоненциальное представление. Это целое число (порядок) указывает, что значение до буквы е (мантисса) умножается на 10 в степени, равной этому целому числу (например, 1.5е-2 представляет 1.5 X ЮЛ или .015).
Шестнадцатеричная константа с плавающей точкой состоит из ведущих символов Ох или ОХ, после которых следуют одна или несколько десятичных или шестнадцатеричных цифр, затем буква р или Р и затем показатель степени для основания 2 с возможным знаком. Например, ОхЗрЮ представляет значение 3 х 2,с. Константы с плавающей точкой интерпретируются компилятором как значения с двойной точностью (double). Можно добавить суффикс f или F, и тогда константа будет иметь тип float вместо double; можно добавить суффикс I или L, чтобы указать константу типа long double. Символьные константы
Один символ, заключенный в апострофы, является символьной константой. Обработка нескольких символов, заключенных в апострофы, определяется ре-ализацией. В символьной константе можно использовать универсальный символ, чтобы указать символ, не входящий в стандартный набор символов. Escape-последовательности
Специальные escape-последовательности распознаются и вводятся с помощью символа «обратный слэш*. Ниже приводятся эти escape-последовательности. Символ Описание \а Звуковой сигнал \b Символ Backspace (возврат на одну позицию назад) \f Form feed (подача страницы) \n Переход на новую строку \r Символ возврата каретки \t Горизонтальное табулирование \v Вертикальное табулирование \ Обратный слэш \" Кавычка \' Апостроф \? Вопросительный знак \nnn Восьмеричное значение символа \unnn Имя универсального символа \Unnnnnnnn Имя универсального символа \xnn Шестнадцатеричное значение символа
Для восьмеричного значения символа можно указать от одной до трех восьмеричных цифр. В последних трех случаях используются шестнадцатеричные цифры. Символьные константы из расширенных наборов
Символьная константа из расширенных наборов записывается как L'x'. Такая константа имеет тин wchart, в соответствии с определением в файле . Константы из расширенных наборов символов - это способ представить сим-вол из набора символов, который не может быть полностью представлен с помощью обычного тина char. Константы символьных строк
Последовательность, содержащая нуль или более символов, заключенных в кавычки, представляет константу символьной строки (строковую константу). В эту строку можно включить любой допустимый символ, в том числе любой из показанных выше escape-символов. Компилятор автоматически вставляет нуль- символ ( \0 ) в конце этой строки.
Обычно компилятор создаст указатель на первый символ строки, имеющий тип
«указатель на char». Но если строковая константа используется с оператором sizeof для инициализации массива символов или с оператором &, то строковая константа имеет тип «массив элементов типа char».Константы символьных строк не могут быть изменены программой. Конкатенация символьных строк
Препроцессор автоматически выполняет конкатенацию смежных строковых констант. Строки могут быть любым числом пробелов. Таким образом, три строки "a" "character" "string"
эквивалентны одной строке "a character string" после конкатенации. Многобайтные символы
Для перехода между различными состояниями в символьной строке можно использовать последовательности символов, определенные реализацией, что позволяет включать многобайтные символы. Строковые константы из расширенных наборов
Строковые константы из расширенного набора символов представляются в формате L'...'. Каждая такая константа имеет тип «указатель на wchar_t, где wchar_t определяется в <stddef.h>. Объекты константных символьных строк
Для создания объекта константной символьной строки нужно поместить сим-вол @ перед константной символьной строкой. Этот объект имеет типа NSConstantString.
Для смежных объектов константных символьных строк выполняется кон-катенация. Таким образом, три строковых объекта @"а" @" character " @"string"
эквивалентны одному строковому объекту @"а character string" Константы перечислимого типа
Идентификатор, который объявлен как значение для перечислимого типа, рассматривается как константа этого типа, но интерпретируется компилятором как тип int. Типы и объявления данных
В этом разделе приводится сводка базовых типов данных, производных типов данных, перечислимых типов данных, а также typedef. Здесь также приводится формат объявления переменных. Объявления
При определении какой-либо структуры, объединения (union), перечислимого типа данных или typedef компилятор не резервирует память автоматически. Из определения компилятор просто получает информацию об определенном типе данных и (необязательно) связывает с ним определенное имя. Такое определение можно делать внутри или вне функции или метода. В первом случае только данная функция или метод «знает» о его существовании; во втором случае определение распространяется на весь файл.
После того, как создано определение, можно объявлять переменные с этим типом данных. Для переменной любого типа данных будет выделена память, если только это не объявление extern (в этом случае память может быть выделена или не выделена, см. ниже раздел «Классы памяти и область действия».
Язык Objective-C позволяет также выделять память одновременно с объяв-лением определенной структуры, объединения или перечислимого типа дан-ных. Для этого нужно просто перечислить соответствующие переменные, прежде чем завершить определение символом «точка с запятой». Базовые типы данных
Базовые типы данных приводятся в таблице В.З. Чтобы объявить переменную с определенным типом данных, нужно использовать формат тип имя = начальное_значение;
Присваивание начального значения переменной не является обязательным и подчиняется правилам, описанным ниже в разделе «Переменные». Для объявления нескольких переменных используется формат тип имя = начальное_значение, имя = начальное_значение, ...;