4.7 Продвижение и понижение типов данных
Многие операторы и функции могут работать со смешанными типами данных. Например,
uint8 (1) + 1
⇒ 2где вышеуказанный оператор работает с 8-битным целым числом и значением двойной точности и возвращает значение 8-битного целого числа. Обратите внимание, что тип понижается до 8-битного целого числа, а не повышается до значения двойной точности, как можно было бы ожидать. Причина в том, что если Octave повышал бы значения в выражениях, подобных приведенному выше, со всеми числовыми константами, необходимо было бы явно привести их к соответствующему типу данных, например,
uint8 (1) + uint8 (1)
⇒ 2что становится затруднительным для пользователя для единообразного применения и может позволить ввести трудно обнаруживаемые ошибки. То же самое относится к значениям одинарной точности, где смешанная операция, такая как
single (1) + 1
⇒ 2возвращает значение одинарной точности. Действительные смешанные операции и возвращаемые типы данных:
| Смешанная операция | Результат | ||
|---|---|---|---|
| double OP single | single | ||
| double OP integer | integer | ||
| double OP char | double | ||
| double OP logical | double | ||
| single OP integer | integer | ||
| single OP char | single | ||
| single OP logical | single |
Та же логика применима к функциям со смешанными аргументами, например,
min (single (1), 0) ⇒ 0
где возвращаемое значение имеет одинарную точность.
В случае смешанных индексированных присваиваний тип не изменяется. Например,
x = ones (2, 2);
x(1, 1) = single (2)
⇒ x = 2 1
1 1где x остается типа двойной точности.
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Promotion-and-Demotion-of-Data-Types.html