..
Что такое цифровой продвижение? Это очень распространенная операция в программе и соответствует неявное преобразование операндов (например, слагаемое), связанные с числовым оператором (например, "+" означает, что дополнение).
Это преобразование необходимо всякий раз, когда операнды не совпадать тип данных, которые, как ожидается, для этой операции. В некоторых случаях преобразования должны быть явными (например, с помощью литых ) и, следовательно, ответственность программиста.
В других случаях, особенно в случае более сложных языков программирования и распределенных (в дальнейшем мы будем ссылаться, в частности, язык Java), преобразование выполняется автоматически, тем самым неявно. В этом случае можно говорить о числовых продвижение по службе.
Можно выделить два основных вида числовых продвижения: Унарные цифровой поощрения и бинарный цифровой продвижение по службе, которые существенно различаются по характеру арифметическое, участвующих в операции (унарный и бинарный). Давайте посмотрим на обе нити, заботясь, чтобы также обеспечить краткими примерами кода Java.
Давайте посмотрим, например:
б байт = 2;
Int [] = новый INT [б];
Символ с = '\ u0001';
[с] = 1;
[0] = с;
В этом случае, хотя и очень простые, мы можем выделить три примера Унарные числовой продвижение по службе. Первое образование Int [] = новый INT [б]. Размер "факт массив должен быть представлен целым числом (Int переменная), в то время как б это переменная типа байт.
Потом, давайте задумаемся об образовании [с] =- 1. В этом случае он передается как индекс "массивов, еще раз, а не параметр целого типа, но (в данном случае) типа характера. Аналогичным образом, следующее утверждение [0] =- с 0 дает положение 'массив для значения целого типа, а не характер.
Прежде всего заметим, что оно связано с переходом на "оператор присваивания ("="), поэтому унарный оператор, который связан только с одним операндом. Вот почему мы можем говорить о Унарные числовой продвижение по службе. Как компилятор обрабатывает преобразования неявно связанных с шаги?
Во всех трех случаях преобразование может быть разложен на два элементарных шагов. Первых, это распаковка преобразования типов, то есть данных (в данном случае Байт типа или символов) преобразуется в соответствующий примитивный тип данных (символ байт, соответственно).
На данном этапе мы переходим к второму этапу преобразования во всех трех рассматриваемых случаях является расширение примитивные преобразования. Короче говоря, нет никакой потери информации и в самом деле, новый тип данных, которые вы выбираете (INT) является избыточной по сравнению с хранения информации (содержится в переменной В, С типа Byte, тип характера). По этой причине компилятор может выполнить преобразование себя.
Мы подчеркиваем это, как только реальные преобразования, которые могут быть выполнены в неявном виде в контексте цифровой продвижение перечисленные. Существует на самом деле также возможность преобразования типов личности, но сохраняет тип данных переменной в вопросе, и поэтому представляет интерес главным образом теоретические.
| |
Linux (курс)
Полное руководство по открытым исходным кодом системы. От 49 €. |
| |
PHP (курс)
Полный курс для создания динамических веб-сайтов. От 49 €. |
| |
Руби и Ruby On Rails (курс)
Создание программного обеспечения и веб-приложений с Рубином и RoR. С 39 €. |