Основные типы 3.1
вначале d=3.2, i=2 x = (y=d/i)*2 (x=(y=3.2/2)*2) | |
(x=(y=1.6)*2) | 3.2 - число двойной точности, этот тип выше типа int, типа числа 2, поэтому частное тоже будет двойной точности. Так как y - целое, то у значения 1.6 будет отброшена дробная часть |
(x=1*2) и y=1
(x=2) 2 и y=1 |
Основные типы 3.2
вначале d=3.2, i=2 y = (x=d/i)*2 (y=(x=1.6)*2) | |
(y=1.6*2) и x=1.6 | Так как x - типа double, то и результат присваивания будет типа double. |
(y=3.2) | Тип 1.6 - double определяет и тип произведения. |
3 и y=3 | Так как y типа int, то у 3.2 должна быть отброшена дробная часть |
Основные типы 3.3
вначале d=3.2, i=2 y = d * (x=2.5/d) (y=(d*(x=2.5/d)) | |
(y=d*2.5/d) и x=2.5/d | Тип x - double, так что у 2.5/d точность сохраняется. |
(y=2.5) 2 и y=2 | Тип y заставляет отбросить дробную часть у 2.5 |
Основные типы 3.4
вначале d=3.2, i=2 x = d * (y = ((int)2.9+1.1)/d) | |
(x=d*(y=(2+1.1)/d)) | Операция приведения более высокого порядка, чем операция +. |
(x=d*(y=3.1/d)) (x=d*(y=нечто)) | |
(x=d*0) и y=0 | y получит значение 0 независимо от величины "нечто", поскольку "нечто" находится между 0 и 1. |
0 и x=0 |
О смешении типов. К этому моменту было уже много примеров, когда смешивание целых значений и значений с плавающей точкой приводило к неожиданным результатам в выражениях. Лучше всего избегать арифметических действий с операндами разных типов. Если же это необходимо, то применять явные приведения типов.