Jeśli zmienna cakes_in_box jest intem na wyjściu otrzymuję 7 jeśli floatem to 8
W C oraz C++ rozróżniamy operator dzielenia całkowitoliczbowego oraz zmiennoprzecinkowego. Mimo że jego identyfikatorem jest ten sam znak "/", działanie jest nieco inne: operator dzielenia zmiennoprzecinkowego zwróci spodziewany wynik z częścią ułamkową ("po przecinku"), zaś operator dzielenia całkowitoliczbowego zwróci wynik z dzielenia pozbawiony części ułamkowej.
Kiedy jaki operator jest wywoływany, jeśli oba mają ten sam identyfikator? Decydują tutaj typy, z jakimi jest wywoływany. Zasada jest prosta: jeśli choć jeden argument jest typu zmiennoprzecinkowego, wybierany jest operator dzielenia zmiennoprzecinkowego; jeśli nie - całkowitoliczbowego.
Przykład:
float result;
int i = 10;
float f = 3.0f;
// wydrukuj sobie wyniki każdej z operacji :)
result = 10 / 3; // oba argumenty są całkowite - wywołany operator dzielenia całkowitoliczbowego
result = i / 3; // dokładnie jak wyżej
result = 10 / 3.0; // jeden argument jest zmiennoprzecinkowy = operator dzielenia zmiennoprzecinkowego
result = i / f; // jak wyżej
result = f / 2; // jak wyżej
result = f / 2.0; // dwa argumenty są zmiennoprzecinkowe = operator dzielenia zmiennoprzecinkowego
result = f / f; // jak wyżej