Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Комментарии к операциям

Читайте также:
  1. Актами применения права являются приговор суда по уголовному делу, нормативные указы Президента РФ и комментарии к кодексам.
  2. Алфавит языка C, идентификаторы, ключевые слова, комментарии
  3. АНАЛИЗ ВЫПОЛНЕНИЯ ОБЯЗАТЕЛЬСТВ ПО ЭКСПОРТНЫМ ОПЕРАЦИЯМ
  4. Аудит расчетов по экспортно-импортным операциям
  5. Аудит расчетов с персоналом по прочим операциям
  6. Виды и формы расчетов по товарным и нетоварным операциям. Внутрифирменные и внешние расчеты. Расчетный, текущий, специальный, валютный и транзитный счета, их назначение.
  7. ДОКУМЕНТЫ ПО ФИНАНСОВО-РАСЧЁТНЫМ ОПЕРАЦИЯМ
  8. Доходы по операциям иным, чем страхование жизни- в т.ч. изменение резерва по операциям иным, чем страхование жизни|3299157504812||88971303455659
  9. Законодательство. Документы и комментарии
  10. Идентификаторы, зарезервированные слова и комментарии

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.

Таблица истинности операции логического отрицания

x ноль не ноль
!x    

7. Побитовое инвертирование применяется только к целым аргументам. Для получения результата аргумент необходимо преобразовать в двоичную систему счисления. Количество разрядов должно соответствовать типу аргумента.

Таблица 3.

Таблица истинности

x    
~x    

Пример.

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++ увеличивает аргумент на единицу при следующей встрече этой переменной. Не учитывается ее использование в строках и комментариях. Заметим, что название языка Си++ происходит от этой операции Автор Си++ Б.Страустрап видимо, предполагал, что этот язык на порядок лучше своего предшественника, языка Си.

9. Операция декремента аналогично уменьшает аргумент на единицу.

Пример.
int x = 2, y = 4, z;

z = x++ + ++x + y-- + --y;

В результате x = 4, y = 2, z = 2 + 4 + 4 + 3 = 13.

10. Операция –x является стандартной, она не меняет значения x.

11. Операция +x лишена смысла.

12. Явное преобразование типа не меняет типа своего аргумента и влияет только на тип результата. Запись (int)2.1 вернет число 2. Используется, как правило, при работе с указателями. Для числовых констант применяется неявное преобразование типа.

13. Операция «звездочка» применяется только к указателю и возвращает переменную, на которую указывает этот указатель. Может находиться в левой части операции присваивания (Lvalue) и в правой части (Rvalue). В первом случае результат операции – сама ячейка, на которую указывает указатель, Во втором случае – содержимое этой ячейки.

14. Взятие адреса применяется к любому идентификатору, с которым связана область ОЗУ. Возвращает логический адрес самого левого байта памяти, которую занимает этот идентификатор. Это могут быть переменные базовых типов, другие указатели, элементы массивов, структурные переменные. Для определения типа результата этой операции, надо добавить к типу аргумента одну звездочку.

Пример.

int x = 3, y, *px;

px = &x; // указатель px указывает на переменную x

y =* px; // y=3

*px = y+1; // x=4

Типом выражения &y является int*, а тип записи &px это int **.

15. Операция sizeof возвращает размер «чего угодно» в байтах. Например, sizeof(float) = 4, sizeof(20) = 2, для дальних адресов sizeof(float*) = 4.

16. Операция new выделяет динамическую память и введена в языке Си++. Ее аналогом в Си является функция malloc.

17. Операция delete освобождает динамическую память, выделенную ранее операцией new. Ее аналогом в Си является функция free.
Пример.

int *pi = new int;

*pi = 100;

delete pi;

18. Умножение * является обычной операцией.

19. Деление / осуществляется обычным образом, если один из аргументов имеет вещественный тип. Если оба аргумента – целые, то операция возвращает только целую часть результата.

20. Деление % применяется только для двух целых аргументов и возвращает целочисленный остаток от деления.

Например, 20.0/3 = 6.33333, 20/3 = 6, 20%3 = 2.

Пример. Имеет место тождество

b = a * (b/a) + b%a.

Пример. Если m – трехзначное целое число abc, то a = m/100, c = m%10, b = m%100/10.

Мультипликативные операции имеют одинаковый приоритет.

21. Аддитивные операции обычны.

22. Бинарная операция сдвига используется для двух аргументов только целого типа. Левый аргумент надо преобразовать к двоичному виду. Правый аргумент указывает, на сколько бит необходимо произвести сдвиг.
При сдвиге влево x << y левые биты числа x пропадают, новые биты справа заполняются нулями. Операция x << y равносильна умножению x × 2 y.

23. При сдвиге вправо x >> y правые биты числа x пропадают, новые биты слева заполняются знаком числа x. Если x отрицательно, то новые биты равны 1, при положительном х новые биты равны 0. Операция x >> y равносильна делению нацело x / 2 y.

Пример.

char x = 20, y = -10;

unsigned char z = 20;

Тогда x >> 2 = 0001 01002 >> 2 = 0000 01012 = 5

x << 2 = 0001 01002 << 2 = 0101 00002 = 80

x << 3 = 0001 01002 << 3 = 1010 00002 = 160 – 256 = -94 – логическая ошибка выхода за диапазон типа char

y >> 3 = 1111 01102 >> 3 = 1111 11102 = -2

z >> 3 = 0001 01002 >> 3 = 0000 00102 = 2

24-26. Операции отношения и сравнения обычны. В случае истины они возвращают 1, при нарушении возвращают 0.

27-29. Побитовые операции применяются для целых аргументов.

Таблица 4.

Таблицы истинности

&       ^       |    
                     
                     

Пример.

7 & 9 = 0000 0111 & 0001 0001 = 0000 00012 = 1

7 ^ 9 = 0000 0111 ^ 0001 0001 = 0001 01102 = 22

7 | 9 = 0000 0111 | 0001 0001 = 0001 01112 = 23

30-31. Логические операции возвращают 1 (истину) или 0 (ложь).

Компилятор оптимизирует логические выражения таким образом, что если по результату вычисленного подвыражения можно сделать вывод относительно результата всего выражения, то дальнейшее вычисление выражения не выполняется.

Пример.

7 && 9 = 1

32. Операция «Условие» позволяет иногда заменить условный оператор if-else на операцию.

Пример. Максимальное из двух чисел равно max = (x > y)? x: y;

Максимальное из трех чисел равно

max = (x > y)? (x > z? x: z): (y > z? y: z);

33. Результатом присваивания является значение того, что присвоено левому аргументу.

34. Комбинированное присваивание x op = y является компактной записью оператора x = x op y. Однако компилятор эту замен не производит. Комбинированное присваивание является отдельной операцией.

35. «Запятая» является, пожалуй, самой экзотической операцией языка Си. Результатом выражения x, y является число y.

Пример.

x = 2,5; // x = 2, так как присваивание сильнее запятой

x = (2,5); // x = 5

По-видимому, здесь хотели написать x=2.5

 




Дата добавления: 2014-12-15; просмотров: 31 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав