Ar trebui să știți deja de acum că tipul unei variabile definește intervalul de valori pe care le poate stoca aceasta și operațiile pe care software-ul le poate executa asupra lor. Un tip int poate stoca, de exemplu, valori variind de la -2147483648 la 2147483647. Dacă încercați să atribuiți o valoare în afara acestui interval unei variabile de tip int, veți întâmpina ceea ce programatorii numesc excepție overflow (excepție de depășire).
O variabila int stochează 32 de biți. Compilatorul utilizează cel mai semnificativ bit pentru a determina semnul variabilei, 0 fiind pozitiv și 1 negativ. Astfel, programul utilizează 31 de biți pentru a reprezenta valoarea variabilei. Pentru a înțelege de ce are loc excepția overflow, trebuie să înțelegeți reprezentarea binară a valorii variabilei. Să luăm în considerare următoarele valori:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
0 0000 0000 0000 0000 0000 0000 0000 0000 1 0000 0000 0000 0000 0000 0000 0000 0001 2 0000 0000 0000 0000 0000 0000 0000 0010 3 0000 0000 0000 0000 0000 0000 0000 0011 4 0000 0000 0000 0000 0000 0000 0000 0100 //etc... 2147483645 0111 1111 1111 1111 1111 1111 1111 1101 2147483646 0111 1111 1111 1111 1111 1111 1111 1110 2147483647 0111 1111 1111 1111 1111 1111 1111 1111 -2147483648 1000 0000 0000 0000 0000 0000 0000 0000 |
Puteți testa acest lucru folosind următorul program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorld { class Program { static void Main(string[] args) { int pozitiv = 2147483647; int negativ = -2147483648; Console.WriteLine("{0} + 1 este {1}", pozitiv, pozitiv + 1); Console.WriteLine("{0} - 1 este {1}", negativ, negativ - 1); Console.Read(); } } } |
Rezultatul va fi aceasta:
Informații Adiționale
Prin urmare, imprimăm o linie la consolă folosind un șir de caractere, despre care vom învăța mai târziu că este o variabilă care poate stoca text. In interiorul ei se pot observa elementele {0} și {1}, iar după aceasta, parametrii negative și negative – 1. În acest caz, {0} va fi înlocuit de primul parametru (negativ) și {1} va fi înlocuit cu al doilea parametru (negativ – 1). Puteți adăuga mai multe elemente / parametrii, respectând același principiu După cum se poate vedea, adăugând 1 la 2147483647 vom avea ca rezultat un număr negativ, în timp ce scăderea cifrei 1 din -2.147.483.647 va avea ca rezultat o valoare pozitivă. Unul dintre pericolele situațiilor overflow este că s-ar putea de multe ori nu observați eroarea, deoarece compilatorul C# nu vă va avertiza cu privire la excepția de depășire. Cu alte cuvinte, programul continuă să funcționeze, chiar dacă are loc excepția overflow. Acesta este motivul pentru care trebuie să fiți atenți atunci când utilizați un număr mare, pentru că excepțiile de depășire pot fi greu de găsit și depanat. Conceptele explicate în această lecție sunt prezentate și vizual, ca parte a următorului videoclip: