Implicitní konverze elementárních typů

Níže je popsána konverze, která probíhá automaticky při vyhodnocování aritmetických výrazů. Obecně vzato, její implementace je shodná s explicitní datovou konverzí.

Uživatel si těchto pravidel musí být vědom především při použití na VM s přesností 32/64 bitů.

Při předávání parametrů přetížené funkci nebo pokud se ve výrazu operátora setkají operandy různých typů, implicitní převody jsou stanoveny pravidly, která následují:

  • ANY_INT → ANY_REAL
  • SINT, USINT, INT, UINT, DINT, UDINT → REAL, LREAL
  • LINT, ULINT → LREAL
  • ANY_INT → ANY_BIT, když mají stejnou délku typu nebo cílový bitový řetězec je delší (tj. je možná konverze DINT, LINT → LWORD, ale ne LINT → DWORD)
  • ANY_BIT → ANY_INT, když mají stejnou délku typu nebo cílový typ int je delší (tj. je možná konverze DWORD, LWORD → LINT, ale ne LWORD → DINT)
  • ANY_BIT → ANY_BIT, když mají stejnou délku typu nebo cílový bitový řetězec je delší
  • V případě konverze BOOL na jiný bitový řetězec, hodnota BOOL je brána jako nultý bit a doplněna zleva nulami.
  • ANY_INT → ANY_INT, když cílový typ je delší nebo stejné délky a v případě, že nedochází ke ztrátě znaménka
  • REAL → LREAL
  • © Energocentrum Plus, s.r.o. 2017 - 2024