Операции над значениями простых типов данных
Основные теоретические сведения
Существуют 6 основных битовых операторов.
& Поразрядное И
| Поразрядное включающие ИЛИ
^ Поразрядное исключающие ИЛИ
‹‹ Сдвиг влево
›› Сдвиг вправо
~ Одноместное поразрядное дополнение до единицы
Таблица операций и их приоритетность | ||||
Приоритет | Знак операции | Смысл операции | Применение | Направление выполнения |
() | Скобки | В выражении (x+y)/2 | Слева направо | |
. | Точка | В имени a.x | ||
[] | Кв.скобки | Для индексации элементов мас- сива a[I] | ||
-> | Указатель | Обращение к полю структуры через указатель l>next | ||
Унарные | * | Косвенная адресация | Для определения указателя и разыменование указателя int *ptr; | Справа налево |
& | Получение адреса | int x=5; ptr=&x; | ||
! | НЕ логическое | (a!=b) | ||
~ | (инверсия) Дополнение до 1 для поразрядных операций | unsigned char A=0xE; ~ A = 0001 | ||
++ | инкримент | .i++; ++I; | ||
-- | декримент | .i--; --I; | ||
+ | Знак числа | +5; +a | ||
- | Знак числа | -5.12; -b | ||
(тип) имя переменной | Приведение типа переменной | int x; long l; l=(long) x; или .l=long(x); | ||
Sizeof(тип) Sizeof(перем.) | Размер ячейки памяти | sizeof(int) | ||
3 мультипликативные | * / % | Умножить Деление Остаток при делении целого на целое | 2*3; 5/2=2; 5.2/2=2.6;1/2=0 5%2=1 | Слева направо |
аддитивные | + - | Сложить Вычесть | 2+3 2-3 | Слева направо |
поразрядные | << >> | Сдвиг влево двоичного кода Сдвиг вправо | int x=7; x=x<<2;// x=111<<2=100 X=x>>1; 100>>1=010 | Слева направо |
отношения | <,>,>=,<= | A<=B | Слева направо | |
сравнения | == != | Равно НЕ равно | A= =B; A!=B | Слева направо |
& | Поразрядное И | 111 & 100 =100 | Слева направо | |
| | Поразрядное ИЛИ | 111 | 100 =111 | Слева направо | |
^ | Исключающее ИЛИ для поразрядных операций | .unsigned int x=0xF,a=1,A; A=x^a; 1111 ^ 0001=1110 | Слева направо | |
&& | Логическое И | (a>0 && a<1) | Слева направо | |
| | | Логическое ИЛИ | (a<0||a>1) | Слева направо | |
? : | Условное выражение | Max = (10>=12)? 10 : 12; т.е. max = 12 | Слева направо | |
Операции присваивания: =; *=; +=; и т.д. | A=2; a*=2; b=c=a; | Слева направо | ||
, | Запятая. Последовательное выполнение действий. Результат операции – результат самого левого выражения | C=A=2,b=7; //c=7 | Слева направо |
// L1_Z2.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
#include "locale.h"
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int a, b;
cout << "Введите два целых числа: ";
cin >> a >> b;
cout << " a + b = " << a + b <<
"\n a * b = " << a * b <<
"\n a - b = " << a - b <<
"\n b - a = " << b - a <<
"\n a / b = " << a / b <<
"\n a % b = " << a % b <<
"\n b % a = " << b % a <<
"\n b / a = " << b / a <<
"\n a / 2 = " << a / 2 <<
"\n a / 2.0 = " << a / 2.0;
double c;
float d;
cout << "\nВведите два вещественных числа: ";
cin >> c >> d;
cout << " c + d = " << c + d <<
"\n c * d = " << c * d <<
"\n c - d = " << c - d <<
"\n d - c = " << c - d <<
"\n c / d = " << c / d <<
"\n d / c = " << d / c <<
"\n c / a = " << c / a;
unsigned char ua = '255', ub = '10';
cout << "\nВведите значения в две переменные: ";
cin >> ua >> ub;
cout << "!ua = " << !ua << "\n!ub = " << !ub
<< "\n~ua = " << ~ua << "\n~ub = " << ~ub
<< "\nua & ub = " << (ua & ub)
<< "\nua | ub = " << (ua | ub)
<< "\nua << 2 = " << (ua << 2)
<< "\nub << 3 = " << (ub << 3)
<< "\nua >> 2 = " << (ua >> 2)
<< "\nub >> 3 = " << (ub >> 3);
char ch = 'A';
cout << "\nКод символа = " << int(ch) << endl;
printf("Код символа = %d\n", ch);
cout << ch + 1 << endl;
system("PAUSE");
return 0;
}
Выводы
В процессе выполнения лабораторной работе я получил знания как выводить и вводить данные, узнал какие типы данных существуют.
На выполнения этой лабораторной работы я потратил 12ч
Мне очень понравилось пользоваться этим великолепным компилятором.
Я теперь научился...