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

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

Жанры

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

К а и b применяются обычные арифметические преобразования (см. ниже раздел «Преобразование базовых типов данных»). Первые четыре оператора отношения имеют смысл для указателей, только если они указывают на один и тот же массив либо на компоненты одной структуры или объединения. Во всех случаях результат имеет тип int. Побитовые операторы

При условии, что i, j, п выражения любого целого типа данных;

выражение i & j выполняет побитовую операци ю AN D с i и j; i | j выполняет побитовую операцию OR с i и j; i А j выполняет побитовую операцию XOR с i и j; ~i получает дополнение до нуля для i; i << n выполняет сдвиг i влево на n бит; i >> n выполняет сдвиг i вправо на n бит.

К этим операндам применяются обычные арифметические преобразования за исключением « и », когда для каждого операнда выполняется целочисленное расширение (см. ниже раздел «Преобразование базовых типов данных»). Если количество битов смешения меньше нуля либо больше или равно числа битов в объекте смешения, то результат смешения не определен. На некоторых машинах правое смещение является арифметическим (заполняется бит знака), а на других — логическим (заполнение нулем). Тип результата операции смещения такой же, как у расширяемого левого операнда. Операторы наращивания и уменьшения на 1 (операторы инкремента и декремента)

При условии, что I модифицируемое lvalue-выражение, тип которого не уточнен как const;

выражение ++I увеличивает I на 1, после чего I используется как значение выражения; I++ использует I как значение выражения и затем увеличивает I на 1; --I уменьшает I на I, после чего I используется как значение выражения; I-- использует I как значение выражения и затем уменьшает 1 на I.

Ниже в разделе «Базовые операции с указателями» описываются эти операции с указателями. Операторы присваивания

При условии, что I модифицируемое lvalue-выражение, тип которого не уточнен как const; op любой оператор, который можно использовать как оператор присваивания (см. таблицу В.4); а выражение;

выражение I = а сохраняет значение а в I; I ор= а применяет орк I и а, сохраняя результат в I.

Если в первом выражении а имеет один из базовых типов данных (за исклю-чением void), то а преобразуется для соответствия типу I. Если I - указатель, то а должен быть указателем того же типа, void-указателем или null-указателем.

Если I — void-указатель, то а может быть указателем любого типа. Второе выражение интерпретируется как I = I ор (а), за исключением того, что I оценивается только один раз (например, в случае x[i++] += 10). Условный оператор

При условии, что а, Ь, с выражения;

выражение а ? b: с получает значение Ь, если а отлично or нуля, или с в противном случае. Вычисляется только выражение b или с.

Выражения Ь и с должны иметь одинаковый тип данных. Если это не так, но оба выражения имеют арифметические типы данных, то применяются обычные арифметические преобразования, чтобы сделать их типы одинаковыми. Если одно из них является указателем, а другое равно 0, то второе выражение используется как null-указатель того же типа, что и первое. Если одно из них является указателем на void, а другое является указагелем на другой тип, то вто-рое преобразуется в указатель на void и результат имеет такой же тип. Оператор приведения типа

При условии, что тип имя какого-либо базового типа данных, перечислимый тип данных (с ключевым словом enum) или тип, определенный как typedef либо приведенный тип данных; а выражение;

выражение ( тип) преобразует а в указанный тип.

Отметим, что использование типа в круглых скобках при объявлении или определении метода не является примером использования оператора приведе-ния типа. Оператор sizeof

При условии, что тип совпадает с описанием в предыдущем разделе; а выражение;

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

Для типа char результат по определению равен 1. Если а — имя массива, для которого задан размер (явным образом или неявно через инициализацию), и это не формальный параметр и не extern-массив, для которого не указан размер, то sizeof а дает число байтов, необходимых для хранения этих элементов в а.

Если а — имя класса, то sizeof (а) дает размер структуры, необходимой для хранения экземпляра а.

Целое значение, которое дает оператор sizeof, имеет тип size_t, который определен в стандартном header-файле .

Если а — массив переменной длины, то данное выражение вычисляется на этапе выполнения; в противном случае оно вычисляется на этапе компиляции и его можно использовать в константных выражениях (см. выше раздел «Кон-стантные выражения»). Оператор «запятая»

При условии, что а, b выражения;

выражение а, Ь означает вычисление а и затем вычисление Ь. Результирующее выражение имеет тип и значение b. Базовые операции с массивами

При условии, что а объявляется как массив из п элементов; i выражение любого целого типа данных; v выражение;

выражение а[0] является ссылкой на первый элемент а; а[n -1] является ссылкой на последний элемента; a[i] является ссылкой на элемент а с номером i; a[i] = v сохраняет значение v в ар].

В каждом случае тип результата совпадает с типом элементов, содержащихся в а. Сводку операций с указателями и массивами см. ниже в разделе «Базовые операции с указателями». Базовые операции со структурами

Примечание. Эго также относится к объединениям (union).

При условии, что х модифицируемое lvalue-выражение типа struct s; у выражение типа struct s; m имя одно из компонентов структуры S; obj любой объект; М любой метод; v выражение;

выражение х является ссылкой на всю структуру и имеет тип struct s; y.m является ссылкой на компонент m структуры у и имеет тип, объявленный для компонента т; x.m = v присваивает v компоненту m выражения х и имеет тип, объявленный для компонента т; х = у присваивает х значение у и имеет тип struct s; f (у) вызывает функцию f, передавая как аргумент содержимое структуры у (внутри f должен быть объявлен формальный параметр типа struct s); [obj М: у] вызывает метод М для объекта obj, передавая как аргумент содержимое структуры у (внутри метода этот параметр должен быть объявлен как тип struct s); return у; возвращает структуру у (возвращаемое значение, объявленное для функции или метода, должно иметь тип struct s). Базовые операции с указателями

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

Русская драматургия XVIII – XIX вв. (Сборник)

Пушкин Александр Сергеевич
Поэзия:
драматургия
6.25
рейтинг книги
Русская драматургия XVIII – XIX вв. (Сборник)

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Последний Паладин. Том 8

Саваровский Роман
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 8

Пушкарь. Пенталогия

Корчевский Юрий Григорьевич
Фантастика:
альтернативная история
8.11
рейтинг книги
Пушкарь. Пенталогия

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Тринадцатый XI

NikL
11. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Тринадцатый XI

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.00
рейтинг книги
Ермак. Телохранитель

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар

Старый, но крепкий 3

Крынов Макс
3. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 3

Последний Паладин. Том 6

Саваровский Роман
6. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 6

Двойник короля 18

Скабер Артемий
18. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 18

Неучтенный элемент. Том 11

NikL
11. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 11

Газлайтер. Том 3

Володин Григорий
3. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 3

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4