De ce 7 / 2 dă 3 în C++?
Pentru că împărțirea a doi întregi este împărțire întreagă, iar partea fracționară se pierde. Ca să obții 3.5, unul dintre operanzi trebuie să fie real.
În C++, dacă ambii operanzi ai lui / sunt întregi, rezultatul este întreg: se păstrează câtul, iar restul se pierde. 7 / 2 este 3, 1 / 2 este 0, 9 / 10 este 0. Rezultatul nu se rotunjește, se trunchiază.
Ca să obții rezultatul real, cel puțin un operand trebuie să fie real:
int a = 7, b = 2;
cout << a / b; // 3
cout << (double)a / b; // 3.5
cout << 1.0 * a / b; // 3.5Atenție: (double)(a / b) dă tot 3, pentru că împărțirea s-a făcut pe întregi înainte de conversie.
Împărțirea întreagă îți e chiar utilă când lucrezi cu cifre: n / 10 taie ultima cifră. În pseudocod același lucru se scrie [n/10], iar n/10 fără paranteze drepte înseamnă împărțirea cu zecimale.
Restul împărțirii se obține cu %. Lecția Tipuri de date are toate capcanele împărțirii.
Lecția care merge mai departe: Tipuri de date și variabile