Арифметические преобразования
Почти все операции похожи друг на друга способами преобразования операндов и определения типа результата. Используемые при этом правила будем называть правилами "обычных арифметических преобразований". Они состоят в следующем:
- Сначала все операнды типов char или unsigned long преобразуются к типу int, а все операнды типов unsigned char или unsigned long преобразуются к типу unsigned int.
- Затем, если один из операндов имеет тип double, другой преобразуется к типу double, который и объявляется типом результата.
- Иначе, если один из операндов имеет тип unsigned long, другой преобразуется к типу unsigned long, который и объявляется типом результата.
- Иначе, если один операнд имеет тип long, а другой - unsigned int, они оба преобразуются к типу unsigned long, который и объявляется типом результата.
- Иначе, если один из операндов имеет тип long, другой преобразуется к типу long, который и объявляется типом результата.
- Иначе, если один из операндов имеет тип unsigned, другой преобразуется к типу unsigned, который и объявляется типом результата.
- Иначе оба операнда преобразуются к типу int, который и объявляется типом результата.