Чтение онлайн

на главную - закладки

Жанры

Программирование на Objective-C 2.0
Шрифт:

Пример применения типа данных long long: long long int maxAllowedStorage;

Указанная переменная будет иметь заданную увеличенную точность — не менее 64 бит. Для вывода целых значений типа long long вместо одной буквы I в строке NSLog используются две буквы I, как в "%Ш".

Квалификатор long разрешается также использовать перед типом double, например: long double US_deficit_2004;

Константа типа long double записывается в виде константы с плавающей точ-кой с добавлением в конце I или L, например: 1.234e+7L

Чтобы вывести значение типа long double, нужно указать модификатор L %Lf выводит значение типа long double с десятичной точкой, %Le выводит значение в экспоненциальном представлении, при %Lg процедура NSLog выбирает между %Lf и %Le.

Квалификатор short, помещенный перед объявлением int, указывает компи-лятору Objective-C, что определенная переменная используется для хранения относительно небольших целых значений. Переменные типа short экономят память. Это существенно, если программа использует большой объем памяти и количество доступной памяти ограничено.

На некоторых машинах переменная short int занимает половину памяти, ко-торая требуется переменной типа int. В любом случае для переменных типа short int выделяется не меньше 16 бит.

В Objective-C не существует способа записать константу типа short int. Чтобы вывести переменную типа short int, нужно поместить букву h перед любым из символов преобразования в целое значение: %hi, %ho или %hx. Для отображения значений short int можно также использовать любой из символов преобразования в целое значение, поскольку эти символы можно преобразовать в целые значения, когда они передаются в процедуру NSLog как аргументы.

Квалификатор, который можно помещать перед переменной типа int, при-меняется для переменной, которая должна содержать только положительные числа. Это квалификатор unsigned. unsigned int counter;

Этот квалификатор расширяет диапазон значений целой переменной.

Константа типа unsigned int формируется путем добавления и ИЛИ U после кон-станты. OxOOffU

Для целой константы можно сочетать и (ИЛИ U) и I (или L). Например, в следующем случае компилятор будет интерпретировать константу 20000 как unsigned long. 20000UL

Целая константа, которая не заканчивается буквами u, U, I ИЛИ L и слишком велика, чтобы уместиться в обычный размер типа int, интерпретируется компи-лятором как unsigned int. Если она слишком велика, чтобы уместиться в unsigned int, то компилятор обрабатывает ее как long int. Если она не умещается даже в long int, компилятор обрабатывает ее как unsigned long int.

При объявлении переменных с типом long int, short int или unsigned int вы можете опустить ключевое слово int. Переменную counter типа unsigned int можно объявить следующим образом: unsigned counter;

Переменные типа char также можно объявлять как unsigned.

Квалификатор signed позволяет явно указать компилятору, что определенная переменная содержит значения со знаком. В основном его используют перед объявлением char. Подробное описание этого квалификатора выходит за рамки этой книги. Тип id

Тип данных id используется для хранения объекта любого типа. Его можно на-зывать обобщенным типом объекта. Ниже объявляется переменная number с типом id. id number;

Можно объявлять методы, которые возвращают значения типа id. -(id) newObject: (int) type;

Здесь объявляется метод экземпляра с именем newObject, который принимает один целый аргумент с именем type и возвращает значение типа id. id — это тип по умолчанию для типа возвращаемого значения и типа аргумента. Ниже приводится объявление метода класса, который возвращает значение типа id. +alloclnit;

Тип данных id часто используется в этой книге. Тип id является основой таких важных средств в Objective-C, как полиморфизм {polymorphism) и динамическое связывание (dynamic binding). (Подробнее см. главу 9.)

В таблице 4.1 приводится сводка базовых типов и квалификаторов.

Табл. 4.1. Базовые типы данных Тип Примеры констант Символы формата NSLog char 'a', '\n' %c short int - %hi, %hx, %ho unsigned short int - %hu, %hx, %ho int 12, -97, OxFFEO, 0177 %i, %x, %o unsigned int 12u, 100U, OXFFu %u, %x, %o long int 12L, -2001, OxffffL %li, %lx, %lo unsigned long int 12UL, 100ul, OxffeeUL %lu, %lx, %lo long long int 0xe5e5e5e5LL, 500ll %lli, %llx, &llo unsigned long long int 12ull, OxffeeULL %llu, %llx, %llo float 12.34f, 3.1e-5f, 0x1.5p10, 0x1 P-1 %f, %e, %g, %a double 12.34, 3.1 e-5, 0x.1p3 %f, %e, %g, %a long double 12.341, 3.1 e-5l %Lf, $Le, %Lg id nil %p 4.2. Арифметические выражения

В Objective-C, как практически во всех языках программирования, знак «плюс» (+) используется для сложения двух значений, знак «минус» — для вычитания двух значений, звездочка (*) — для умножения двух значений, а слэш (/) — для деления двух значений. Эти операторы называются бинарными (binary) арифметическими операторами, поскольку они работают с двумя значениями, или членами. Старшинство операторов

Вы уже видели, как в Objective-C выполняется простая операция, например, сложение. В следующей программе показаны операции вычитания, умножения и деления. В последних двух операторах этой программы показано, что оператор может иметь более высокий приоритет, или старшинство (precedence) по сравнению с другим оператором. Любой оператор в Objective-C имеет свой приоритет.

Приоритет определяет порядок вычисления выражения, содержащего более одного оператора: оператор с более высоким приоритетом вычисляется первым. Выражения, содержащие операторы с одинаковым приоритетом, вычисляются слева направо или справа налево (в зависимости от оператора). Это свойство ассоциативности (associative) оператора. В приложении В приводится полный список старшинства операторов и правил ассоциативности. // Использование арифметических операторов #import <Foundation/Foundation.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int a = 100; int b = 2; int c = 25; int d = 4; int result; result = a - b; //вычитание NSLog (@"a - b = %i", result); result = b * с; //умножение NSLog (@"b * c = %i", result); result = a / с; //деление NSLog (@"a / c = %i", result); result = а + b * с; //старшинство NSLog (@"а + b * с = %i", result); NSLog (@"а * b + с * d = %i", а * b + с * d); [pool drain]; return 0; }

Поделиться:
Популярные книги

Третий Генерал: Тома I-II

Зот Бакалавр
1. Третий Генерал
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Третий Генерал: Тома I-II

Двенадцатая реинкарнация. Трилогия

Богдашов Сергей Александрович
Фантастика:
боевая фантастика
5.60
рейтинг книги
Двенадцатая реинкарнация. Трилогия

Конфликт чести. Агент перемен. Лови день

Ли Шарон
Золотая библиотека фантастики
Фантастика:
боевая фантастика
6.25
рейтинг книги
Конфликт чести. Агент перемен. Лови день

Маркс и Энгельс

Серебрякова Галина Иосифовна
421. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Маркс и Энгельс

Волки на границе

Милан Виктор
26. Боевые роботы — BattleTech
Фантастика:
боевая фантастика
6.40
рейтинг книги
Волки на границе

#Бояръ-Аниме. Газлайтер. Том 7

Володин Григорий Григорьевич
7. История Телепата
Фантастика:
аниме
фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 7

Анубис

Хольбайн Вольфганг
Фантастика:
фэнтези
ужасы и мистика
8.31
рейтинг книги
Анубис

Весь Фрэнк Герберт в одном томе. Компиляция

Герберт Фрэнк Патрик
Абсолют
Фантастика:
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Весь Фрэнк Герберт в одном томе. Компиляция

Лоенгрин, рыцарь Лебедя

Никитин Юрий Александрович
Фантастика:
фэнтези
боевая фантастика
5.50
рейтинг книги
Лоенгрин, рыцарь Лебедя

Ведьмы Плоского мира

Пратчетт Терри Дэвид Джон
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Ведьмы Плоского мира

Футуриф. Токсичная честность

Розов Александр Александрович
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
Футуриф. Токсичная честность

Ведьма

Вилар Симона
1. Ведьма Малфрида
Фантастика:
фэнтези
8.77
рейтинг книги
Ведьма

Деяния святых Апостолов

Стотт Джон Р.
Научно-образовательная:
религиоведение
5.00
рейтинг книги
Деяния святых Апостолов

Артур и Джордж

Барнс Джулиан Патрик
Интеллектуальный бестселлер. Читает весь мир.
Детективы:
исторические детективы
6.40
рейтинг книги
Артур и Джордж