Sdílet prostřednictvím


Aritmetické převody

Mnoho binární operátory (uvedeny v výrazy s binární operátory) způsobit převody operandy a poskytují výsledky stejným způsobem.Způsob, jakým tyto operátory způsobit převody se nazývá "obvyklých aritmetických převody." Aritmetické převody operandy různé typy nativní jsou prováděny podle následující tabulky.Typy TypeDef chovají v souladu s jejich základní typy nativní.

Podmínky pro převod typu

Podmínky splněny

Popis převodu

Buď operand je typu dlouhýdvojité

Druhým operandem je převést na typ dlouhýdvojité

Předcházející podmínka není splněna a buď operand je typu dvojité.

Druhým operandem je převést na typ dvojité.

Předchozí podmínky nejsou splněny a buď operand je typu plovoucí.

Druhým operandem je převést na typ plovoucí.

Nejsou splněny podmínky předcházejícího (žádné operandy jsou plovoucí typy).

Nedílnou propagační akce prováděny na operandy takto:

  • Pokud je buď operand typu unsigneddlouhý, s druhým operandem je převést na typ unsigned long. 

  • Pokud předcházející podmínka není splněna, a buď operand je typu dlouhý a jiné typu unsignedint, jsou oba operandy převést na typ unsigned long. 

  • Pokud předchozí dvě podmínky nejsou splněny, a buď operand je typu dlouhý, s druhým operandem je převést na typ dlouhý.

  • Pokud předchozí tři podmínky nejsou splněny, a buď operand je typu unsigned int, s druhým operandem je převést na typ unsigned int.

  • Pokud žádný z výše uvedené podmínky splněny, jsou oba operandy převést na typ int.

Následující kód ilustruje pravidla převodu, které jsou popsány v tabulce:

// arithmetic_conversions.cpp
double dVal;
float fVal;
int iVal;
unsigned long ulVal;

int main() {
   // iVal converted to unsigned long
   // result of multiplication converted to double
   dVal = iVal * ulVal;

   // ulVal converted to float
   // result of addition converted to double
   dVal = ulVal + fVal;
}

První příkaz v tomto příkladu ukazuje násobení dvou typů, iVal a ulVal.Podmínka splněna je, že ani jeden operand je typu plovoucí a jeden operand je typu unsigned int.Proto s druhým operandem, iVal, je převést na typ unsigned int.Výsledkem je přiřazen k dVal.Je splněna podmínka, že jeden operand je typu dvojité; proto unsigned int výsledkem násobení je převést na typ dvojité.

Druhý příkaz v tomto příkladu ukazuje přídavek plovoucí a integrálního typu fVal a ulVal.ulVal Proměnné je převést na typ plovoucí (třetí podmínka v tabulce).Je výsledkem přidání převést na typ dvojité (druhá podmínka v tabulce) a přiřazené k dVal.

Viz také

Referenční dokumentace

Standardní