Când folosesc long long în loc de int?

Când o valoare poate depăși aproximativ două miliarde: produse, sume lungi, factoriale, termeni Fibonacci mari. Depășirea nu dă eroare, dă rezultat greșit.

Un int ține valori până pe la 2 miliarde (2·10⁹), iar un long long până pe la 9·10¹⁸. Dacă un rezultat nu încape, nu primești nicio eroare. Primești un număr greșit, adesea negativ.

Când se întâmplă în practică:

  • Produse. Două numere de ordinul 10⁵ înmulțite dau 10¹⁰, deci depășesc.
  • Sume lungi. O mie de valori de ordinul 10⁷ dau 10¹⁰.
  • Factoriale și puteri. 20! este ultimul care încape în long long.
  • Fibonacci. Termenul 47 depășește int, termenul 93 depășește long long.

O capcană mai greu de văzut: tipul rezultatului se decide după tipul operanzilor, nu după variabila în care îl pui. long long p = a b; cu a și b de tip int calculează produsul pe int și depășește înainte de atribuire. Scrie 1LL a * b.

Limitele din enunț îți spun ce tip să folosești, așa că citește-le înainte să scrii prima linie. Lecția Tipuri de date are tabelul complet.

Lecția care merge mai departe: Tipuri de date și variabile