Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Перетворення типів даних .

Деякі оператори залежно від своїх операндів можуть викликати перетворення їх значень з одного типу в іншій.

Об'єкти короткого цілого, перелічувального, символьного типу - всі із знаком або без можуть використовуватися у виразі там, де можливо вживання цілого. Якщо тип int дозволяє "охопити" всі значення початкового типу операнда, то операнд приводиться до типу int, в противному випадку він приводиться до unsigned int. Ця процедура називається цілочисельним підвищенням (Integral promotion - цілочисельне підвищення - іноді також переводять як "інтегральне просування”).

Будь-яке ціле приводиться до деякого заданого беззнакового типу шляхом пошуку конгруентного (тобто має те ж двійкове представлення)

якнайменшого додатнього значення і отримання залишку від ділення його на nmax + 1, де nmax - найбільше число в цьому беззнаковому типі. Для двійкового представлення в додатковому коді це означає або викидання зайвих старших розрядів, якщо беззнаковий тип "вже" початкового типу, або заповнення бракуючих старших розрядів нулями (для значення без знака) чи значенням знака (для значень із знаком), якщо беззнаковий тип "ширше" початкового. В результаті приведення будь-якого цілого до знакового

типу перетворюване значення не зміняється, якщо воно представляється в цьому новому типі.

При перетворенні з типу з плаваючою крапкою в цілочисельний дробова частина значення відкидається; якщо отримане при цьому значення не можна представити в заданому цілочисельному типі, то результат не визначений. Зокрема, не визначений результат перетворення від’мних значень з плаваючою крапкою в беззнакові цілі.

Якщо значення перетвориться з цілого у величину з плаваючою крапкою і вона знаходиться в допустимому діапазоні, але представляється

в новому типі неточно, то результатом буде одне з двох значень нового типу, які є найближчими до початкового. Якщо результат виходить за межі діапазону допустимих значень, поведінка програми не визначена.

При перетворенні з типу з плаваючою крапкою меншої точності в тип з плаваючою крапкою більшої точності значення не змінюється.

Якщо, навпаки, перехід здійснюється від більшої точності до меншої і значення залишається в допустимих межах нового типу, то результатом буде одне з двох найближчих значень нового типу. Якщо результат виходить за межі діапазону допустимих значень, поведінка програми не визначена.

В багатьох операціях перетворення типів операндів і визначення типу результату здійснюються за одними і тими ж правилами. Вони полягають в тому, що операнди приводяться до деякого загального типа, який також є і типом результату. Ці правила називаються звичайними арифметичними перетвореннями.

· Якщо який-небудь з операндів має тип long double, то інший приводиться до long double.

· Якщо який-небудь з операндів має тип double, то інший приводиться до double.

· Якщо який-небудь з операндів має тип float, то інший приводиться до float.

· Якщо один з операндів має тип unsigned long int, то і інший перетвориться в unsigned long int.

· Якщо один з операндів належить типу long int, а інший - unsigned int, то результат залежить від того, чи покриває long int всі значення unsigned int, і якщо це так, то unsigned int приводиться до long int; якщо ні то обидва операнди перетворяться в unsigned long int.

· Якщо один з операндів має тип long int, то інший приводиться до long int.

· Якщо один з операндів - unsigned int, то інший приводиться до unsigned int.

Отже, 1)арифметика з операндами з плаваючою крапкою тепер може проводитися з одинарною точністю, а не тільки з подвійною;

2)більш короткий беззнаковий тип в комбінації з більш довгим знаковим типом не поширює властивість беззнаковости на тип результату.


Читайте також:

  1. Git виконує перевірку цілісності даних
  2. I етап. Аналіз впливу типів ринку на цінову політику.
  3. Автоматизований банк даних (АБД).
  4. Адаптивні хвилькові перетворення : Хвилькові пакети.
  5. Адреси даних. Вказівники.
  6. Аксіоматика простих типів даних
  7. Аксіоматика структурних і складних типів даних. Структурні типи даних.
  8. Аналіз даних засобами Excel
  9. Аналіз паралельного інтерейсу з DSP-процесорами: запис даних в ЦАП, що під’єднаний до адресного простору пам’яті
  10. Аналіз паралельного інтерфейсу з DSP-процесорами: читання даних з АЦП, що під’єднаний до адресного простору пам’яті
  11. Аналіз статистичних даних про склад та плинність кадрів, які обіймали керівні
  12. Аналіз та інтерпретація одержаних даних




Переглядів: 709

<== попередня сторінка | наступна сторінка ==>
Символьні константи. | Вирази. Основні арифметичні операції.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.016 сек.