Лабораторная работа: Операции языка Cи
int x=5;
printf(“%d”, x + ::x); // 7
}
5. Операция “точка” используется с структурными переменными и над объектами классов. Например,
Pixel A;
А.x = 100;
6. В языке Си нет логических констант true и false. Вместо этого все, что не ноль считается истинным, а ноль любого типа считается ложью. При этом представителем истины является 1.
Таблица 2.
Таблица истинности операции логического отрицания
x | ноль | не ноль |
!x | 1 | 0 |
7. Побитовое инвертирование применяется только к целым аргументам. Для получения результата аргумент необходимо преобразовать в двоичную систему счисления. Количество разрядов должно соответствовать типу аргумента.
Таблица3.
Таблица истинности
x | 0 | 1 |
~x | 1 | 0 |
Пример.
char x = 20, y;
y= ~x;
Так как х = 20 = 000101002, то y = 11101011. Переменная y является знаковой, поэтому ее содержимое компилятор будет интерпретировать как число со знаком, то есть отрицательное. Найдем это число из схемы
y = 11101011
+
-y = 00010101
= 00000000
Так как –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. Используется, как правило, при работе с указателями. Для числовых констант применяется неявное преобразование типа.