Операции языка Cи
Кафедра: Автоматика и информационные технологии ОПЕРАЦИИ ЯЗЫКА СИ Содержание ХАРАКТЕРИСТИКИ ОПЕРАЦИЙ Таблица приоритетов операций Комментарии к операциям Правила преобразований типов В выражениях В присваиваниях ЛАБОРАТОРНЫЕ ЗАДАНИЯ Основные арифметические операции Операции присваивания. Логические операции и операции инкремента. Поразрядные операции. Отношения и условия Выполнение операций и их приоритеты Основные типы данных Приведение целых и вещественных типов Приведение целых и вещественных выражений ОТВЕТЫ К ЗАДАНИЯМ ДОПОЛНИТЕЛЬНЫЕ ЗАДАНИЯ БИБЛИОГРАФИЧЕСКИЙ СПИСОК Характеристики операций Операция - это элементарная конструкция, которая возвращает некоторый результат. В отличие от операций, операторы - синтаксические конструкции, управляющие ходом выполнения программы. Основные операторы: условные переходы и циклы. По количеству аргументов операции бывают унарные, бинарные и имеется одна тернарная операция «Условие». Если одна и та же операция встречается в выражении несколько раз, то говорят о лево-ассоциативных и право-ассоциативных операциях. В первом случае данная операция выполняется слева направо, во втором - справа налево. Таблица приоритетов операцийОперации, расположенные в таблице выше, имеют больший приоритет. Таблица 1 |
№ операции | Группа операций | Обозначение операции | Название операции | Название на сленге | Ассоциативность | | 1 | первичные | () | круглые скобки | 1. () [] -> :: . | | | 2 | | [] | индексация | Квадратные скобки | | | 3 | | -> | Обращение к элементу структуры по указателю на структурную переменную | стрелка | | | 4 | | :: | Разрешение видимости | Четвероточие | | | 5 | | . | Обращение к элементу структуры по имени структурной переменной | Точка | | | 6 | унарные | ! | Логическое отрицание | Восклицательный знак | < | | 7 | | ~ | Побитовое инвертирование | Тильда | < | | 8 | | ++ | Автоматический инкремент ++х; Отложенный инкремент х++ | Плюс-плюс | < | | 9 | | -- | Автоматический декремент --х; Отложенный декремент х-- | Минус-минус | < | | 10 | | - | Обращение знака | Минус | < | | 11 | | + | Подтверждение знака | плюс | < | | 12 | | (тип) | Явное приведение типа | | < | | 13 | | * | Разыменование указателя | Звездочка | < | | 14 | | & | Взятие адреса | Амперсанд | < | | 15 | | sizeof | Размер в байтах аргумента | sizeof | < | | 16 | | new | Операция выделения динамической памяти | new | < | | 17 | | delete | Операция освобождения динамической памяти | delete | < | | 18 | мультипликативные | * | умножение | умножение | | | 19 | | / | деление | деление | | | 20 | | % | Деление по модулю | процент | | | 21 | аддитивные | + - | Сумма разность | Сложение Разность | | | 22 | сдвиги | << | Побитовый сдвиг влево | Меньше-меньше | | | 23 | | >> | Побитовый сдвиг вправо | больше-больше | | | 24 | отношения | < <= > >= | Меньше Меньше равно Больше Больше равно | | | | 25 | Сравнение | == | Сравнение на равенство | | | | 26 | | != | Сравнение на неравенство | 3. .* ->* | | | 27 | поразрядные | & | Побитовое «И» | амперсанд | | | 28 | | ^ | Побитовое взаимоисключающее «ИЛИ» | крышка | | | 29 | | | | Побитовое «ИЛИ» | Побитовое «ИЛИ» | | | 30 | логические | && | Логическое «И» | «И» | | | 31 | | || | логическое «ИЛИ» | «ИЛИ» | | | 32 | Условие | ?: | Условное выражение | Вопросительный знак | < | | 33 | присваивания | = | Присваивание | Равно | < | | 34 | | *= /= %= += -= &= ^= |= <<= >>= | Комбинированные присваивания | Умножить равно и т.д. | < | | 35 | запятая | , | запятая | запятая | | | |
Ассоциативность «слева направо» означает группировку операций таким образом: запись A1 @ A2 @ A3 означает ((A1 @ A2) @ A3). Ассоциативность «справа налево» обрабатывает запись A1 @ A2 @ A3 как (A1 @ (A2 @ A3)). Комментарии к операциям1. () - самая сильная операция. Выражение (2*(4+5)) равно 18.2. [] индексирует элементы массивов. А[3][6] - в третьей строке шестой элемент. Индексация начинается с нуля, то есть А[0][0] - начальный элемент массива.3. Операция -> используется с указателями на структурные переменные и на объекты классов. Например,struct Pixel{ int x, y; char col; }; Pixel A, *ptr; ptr = &A; ptr->x = 100; 4. Операция :: применятся для обращения к глобальным переменным, скрытым локальными переменными. int x = 2; void main() { int x=5; printf(“%d”, x + ::x); // 7 } 5. Операция “точка” используется с структурными переменными и над объектами классов. Например, Pixel A; А.x = 100; 6. В языке Си нет логических констант true и false. Вместо этого все, что не ноль считается истинным, а ноль любого типа считается ложью. При этом представителем истины является 1. Таблица 2. Таблица истинности операции логического отрицания 7. Побитовое инвертирование применяется только к целым аргументам. Для получения результата аргумент необходимо преобразовать в двоичную систему счисления. Количество разрядов должно соответствовать типу аргумента. Таблица 3. Таблица истинности Пример. char x = 20, y; y= ~x; Так как х = 20 = 000101002, то y = 11101011. Переменная y является знаковой, поэтому ее содержимое компилятор будет интерпретировать как число со знаком, то есть отрицательное. Найдем это число из схемы y = 1110 1011 + -y = 0001 0101 = 0000 0000 Так как -y = 21, то y = -21. 8. Автоматический инкремент увеличивает аргумент на единицу. Применяется к любым типам. Операция ++x эквивалентна оператору x = x + 1, но занимает меньше места и удобнее в сложных выражениях. Отложенный инкремент x++ увеличивает аргумент на единицу при следующей встрече этой переменной. Не учитывается ее использование в строках и комментариях. Заметим, что название языка Си++ происходит от этой операции Автор Си++ Б.Страустрап видимо, предполагал, что этот язык на порядок лучше своего предшественника, языка Си.
Страницы: 1, 2
|