Преобразование типов операндов при выполнении операций
Перед выполнением операции все операнды целого типа со знаком, которые по длине короче, чем int преобразуются в int, а беззнаковые операнды короче uint, преобразуются в uint.
Перед выполнением операции операнд младшего типа преобразуется к операнду старшего типа. Старшим считается тип, у которого больше диапазон значений.
Больше Меньше
Исключение
Особая ситуация: операнды типов uintи int. Эти типы имеют одинаковый по величине диапазон значений, но смещенный на числовой оси. В этом случае оба операнда преобразуются к типу long.
Тип результата операции будет совпадает с типом операндов после преобразования.
Преобразования выполняются при выполнении операции и не влияют на хранение значений операндов в памяти.
Арифметические операции
Унарные
Изменение знака
Унарный +
Инкремент
Декремент
Изменение знака
int a=10, b=20, c, d;
c=-a; // с=-10
d=+b; // d=20
Инкремент предназначен для увеличения значения переменной на единицу, а декремент – для уменьшения значения переменной на единицу.
int a=10;
|
++а; // а=а+1; а=11
int a=10;
|
--а; // а=а-1; а=9
Операции инкремент и декремента могут использоваться как в префиксной форме (знак перед переменной), так и в постфиксной форме (знак после переменной). Отличия будут проявляться при использовании операции в выражении: префиксная – сначала изменяется значение переменной, потом используется новое значение; постфиксная – сначала используется старое значение переменной, потом изменяется значение переменной.
int a=10, b=10, x, y;
x=a++; //.a=11 → x=10
y=++b; // b=11 → y=11
Бинарные операции
уменьшение
приоритета
int a, b;
double c;
a=10/4; //a=2
c=10/4.; //c=2.5
b=10./4; //ошибка!!! (10./4.=2.5)
при присваивании возможна
потеря информации!!!
int a;
а=10%3; //а=1
а=-10%3; //а=-1
а=10%-3; //а=1
а=-10%-3; //а=-1
Дата добавления: 2019-02-08; просмотров: 703;