Un tip de date caracter (tip char)
În C ++, nu există nici un tip standard de date care ar putea fi considerate cu adevărat simbolic. Pentru a reprezenta informația simbolică, există două tipuri de date, care sunt potrivite pentru acest scop, - tipurile carboniza și wchar_t.
O variabilă de tip char este proiectat pentru a stoca un singur caracter (de exemplu, litere sau spații). În memoria de caractere de calculator sunt stocate ca numere întregi. Corespondența dintre simbolurile și codurile este definit tabelul de codificare. care depinde de sistemul informatic și de operare. Aproape toate tabelele codificări au litere mari și mici ale alfabetului, numerele, 0. 9, și unele caractere speciale. Cel mai frecvent masa de codificare este un tabel de caractere ASCII (American Standard Code pentru schimbul de informații - American Standard Code pentru schimbul de informații).
Deoarece caracterele sunt stocate în memoria calculatorului ca numere întregi, de tip char este de fapt un subset de tip int.
Sub-size tip de caractere alocat 1 octet.
specificatorilor tip char poate fi utilizat cu semnate și nesemnate. Semnată Tipul de date char poate stoca valori în intervalul -128 la 127. Când se utilizează tipul de valoarea unsigned char poate fi în intervalul de la 0 la 255. Pentru codificare utilizat codul ASCII. Codurile de caractere de la 0-31 aparțin serviciului și au o semnificație independentă doar în situațiile de intrare-ieșire.
Valorile tip char sunt, de asemenea, utilizate pentru stocarea numerelor acestor intervale.
tip wchar_t proiectat pentru a lucra cu un set de simboluri, pentru codare care 1 octet nu este suficient, de exemplu, o codificare Unicode. Dimensiunea de tip wchar_t este de 2 octeți. Dacă programul pe care doriți să îl utilizați constante de tip string wchar_t. ele sunt înregistrate prefix L. de exemplu, L „Cuvântul“.
O logică (Boolean) Tip de date (tip bool)
În C ++, folosesc logica binară (adevăr. Lie). Minciuni corespunde unei valori zero. adevăr - unitate. Valorile de acest tip pot lua, de asemenea, valori adevărate și false.
Valorile false reprezentare sub formă internă corespunzătoare 0, orice altă valoare este interpretată ca fiind adevărată. În unele compilatoare de C ++ nu este de acest tip, folosiți un int în acest caz. la care valorile reale ale ieșirilor 1, și dacă false - 0. Sub atribuit tip de date logice de 1 octet.
Un tip enumerat (tip enum)
Acest tip este definit ca un set de identificatori care sunt comune constante întregi denumite, care sunt atribuite un unic și ușor de utilizat denumiri. Astfel, enumerarea sunt seturi ordonate de numere întregi. Ei au o sintaxă aparte și o zonă destul de specifice de utilizare.
Variabilă. care poate lua o valoare dintr-o listă de constante definite, numită variabilă a unui tip de enumerare sau enumerare. Această variabilă poate lua valoarea numai din lista de constante denumite. Numite constante listă sunt de tip int. În consecință, memoria. lista variabilă corespunzătoare - este de memorie. necesare pentru a include o valoare int.
Setul de valori de tip martor. Tipul void are trei scopuri:
- instruit să nu se întoarcă valorile funcției;
- o indicație a parametrilor funcției neprimirea;
- crearea de indicii fără tipuri.
Tipul void este folosit în principal pentru a determina funcțiile. care nu returnează o valoare, pentru a indica o listă goală de argumente ale funcției ca tip de bază pentru indicii într-o operațiune turnat.
Principalele tipuri de date
tipuri de conversie
Prin evaluarea expresiilor, unele operații necesită operanzi să aibă tipul corespunzător, în caz contrar, la momentul compilării, un mesaj de eroare. De exemplu, operația de a lua un rest de divizare (%) necesită operanzi întregi. Prin urmare, în C ++ este posibil pentru a aduce valorile un tip la altul.
Tipul de conversie - este de a aduce valoare unei variabile de un tip la o valoare de alt tip.
Alocați conversii de tip implicite și explicite. Când specificați în mod explicit tipul de variabilă de reducere. care este necesară pentru a transforma variabila originală. Atunci când ia de conversie de conversie implicită loc în mod automat, în conformitate cu normele stabilite în limbajul de programare C ++.
Formatul operațiunilor de tip de conversie explicite:
De exemplu, int (x), float (2/5), lung (x + y / 0,5).
Tipul de conversie trebuie utilizat cu precauție, deoarece această operație poate duce la pierderea de informații. De exemplu, după reducerea tipului lung are loc într-o informație trunchiere mai scurtă de biți de ordin înalt.
Exemplul 2. Intervalul de timp
Definit începutul și sfârșitul unei perioade de timp, în ore, minute și secunde (în termen de o zi). Găsiți lungimea acestui interval, în aceleași unități.
Datele de intrare pentru acest lucru sunt șase numere întregi care definesc începutul și sfârșitul intervalului, rezultatele - trei valori întregi (de tip int).
Notăm variabile pentru a stoca intervalul de pornire oră1. min1 și Sec1. Interval final de stocare - hour2. min2 și sec2. iar valorile rezultate - oră. min și sec.
Pentru a rezolva această problemă este necesar pentru a converti ambele momente de timp în al doilea scăzând primul din al doilea, și apoi converti rezultatul înapoi la ore, minute și secunde. Prin urmare, este necesar sum_sec variabilă intermediară. care va stoca valoarea intervalului în secunde. Ea poate fi destul de semnificative, pentru că în, ziua 86400 secunde, care merge dincolo de int de tip scurt. Prin urmare, pentru a selecta variabila lung de tip întreg (int lung. Abreviată lung).
Pentru a converti rezultatul înapoi de la secunde la ore și minute folosind aruncarea partea fracționară prin împărțirea un număr întreg de un număr întreg.
Atunci când se efectuează operații matematice efectuate implicite (automate) expresii tip de conversie pentru a provoca operanzi la un tip comun sau de a prelungi scurt în mărime la dimensiunea de valori întregi folosite pentru instrucțiuni mașină. Efectuarea de conversie depinde de operațiunea specifică și tipul de operand sau operanzi.
1. Conversia tipurilor intregi sunt semnate.
- număr întreg semnat este convertit într-un număr întreg semnat mai scurt. cu pierderea de informații: numărul de biți pierdut tot ce sunt deasupra (sau, respectiv, - de mai jos) de delimitare, care determină dimensiunea maximă a variabilei.
- număr întreg semnat este convertit într-un număr întreg lung, cu un semn. Prin semn de multiplicare. Asta este tot biții adăugate numărului binar va fi ocupat de același număr care a fost în bitul de semn. dacă numărul a fost pozitiv, acesta va fi, respectiv, 0, dacă este negativ, de 1.
- Semnat întreg la un întreg fără semn. Primul pas într-un întreg semnat convertit la un întreg cu semn corespunzător tipului dorit dacă tipul de date este mai mare. În valorile rezultate din bitul de semn nu este eliminat, dar este considerat un egal la egal la biții de repaus, adică acum toate biți formează o valoare numerică.
- Conversia întreg semnat la tipul de flotant are loc fără pierderi de informații. cu excepția tipului de transformare int lung si unsigned int lung pentru a pluti tip. atunci când precizia poate fi pierdut de multe ori.
2. Conversia tipurilor întreg fără semn.
- unsigned integer este convertit într-un număr întreg fără semn sau mai scurt semnat de trunchiere.
- unsigned integer este convertit într-un număr întreg fără semn lung sau semnat prin adăugarea zerouri pe stânga.
- unsigned integer convertit la un întreg cu semn de aceeași mărime. Dacă luăm, de exemplu, nesemnate scurt, și scurt - un număr între 32768 și 65535 deveni negativ.
- unsigned integer este convertit la un tip plutitor. În primul rând, acesta este convertit la valoarea semnat de tip lung. care este apoi convertit într-un punct de tip flotant.
3. Conversia tipurilor plutitoare.
- Valorile de tip sunt convertite la tip float dublă, fără a schimba valorile.
- Valorile sunt convertite în dublu float c unele pierderi de precizie. adică, numărul de zecimale. Dacă valoarea este prea mare pentru a pluti. efluentul de apare, raportate în timpul rulării.
- La conversia unei valori în virgulă mobilă la număr întreg tipuri este mai întâi convertit la tipul lung (partea fracționară a cantității plutitoare, astfel îndepărtat) și apoi convertit tipul de valoare dorită tipul întreg lung. Dacă valoarea este prea mare pentru mult timp. conversie rezultatul este nedefinit. De obicei, acest lucru înseamnă că orice „nedorită“ poate fi găsit la latitudinea compilatorului. În practică, aceste transformări nu în mod normal, se confruntă.