Programowanie w języku C/C++

Int

  • 2006-03-20 11:30
  • 0 komentarzy
  • 12976 odsłon
  • Oceń ten tekst jako pierwszy
int -jeden z podstawowych typów danych języka C/C++.
Dane typu int mogą przechowywać jedynie liczby całkowite. Za pomocą specyfikatora signed lub unsigned określa się, czy mają to być liczby ze znakiem (ujemne i nieujemne), czy liczby bez znaku (jedynie nieujemne). Specyfikator piszemy przed słowem "int".Gdy nie użyjemy żadnego, kompilator przyjmie domyślnie, że dana typu int może przechowywać wartości ze znakiem (signed).
A więc poniższy zapis:

signed int wiek;

jest równoważny takiemu:

int wiek;

zmienna może w obu przypadkach przyjmować wartości zarówno nieujemne, jak i ujemne.
Natomiast, gdy napiszemy:

unsigned int wiek; //równoprawny zapis: unsigned wiek;

zmienna wiek może przyjmować jedynie wartości które są nieujemne.

Ważne jest aby pamiętać że typ int jest typem całkowitym. Oznacza to, że przy wykonaniu poniższej operacji:
int a;
a=1.9;
w rzeczywistości zmiennej "a" zostanie przypisana część całkowita(przed kropką), a część ułamkowa zostanie potraktowana tak jakby jej nie było. Tak więc liczba 1.9 nie zostanie zaokrąglona do 2.  Czyli w powyższym przykładzie zmienna "a" będzie przechowywać wartość 1. Podobnie gdy wykonuje się operacje arytmetyczne np.:
int a=10;
a=a/3; //10:3=3,333(3)

zmienna "a" będzie miała wartość 3.


W zależności od kompilatora dane typu int zajmują 2 lub 4 bajty, czyli 16 lub 32 bity. A więc mogą przyjmować 216=65536 lub 232=4294967296 różnych wartości. Jest przyjęte że typ int nie może zajmować więcej bajtów niż long i mniej niż short, a więc klasyfikuje się w przedziale:
<center>short<=int<=long</center>

Istnieje możliwość sprawdzenia ile bajtów zajmuje typ danych służy do tego funkcja sizeof();

Dane typu int(1) bez znaku mogą przechowywać liczby całkowite z zakresu <0; 65535>,a więc 65536 różnych wartości.
Dane typu int(1) ze znakiem mogą przechowywać liczby całkowite z zakresu <-32768; 32768>, a więc również 65536 różnych wartości.
(1) dla danej zajmujące 2 bajty.

Tak, więc signed i unsigned informuje kompilator w jaki sposób mają być traktowane dane typu int. Polega to na tym, że w pierwszym przypadku(signed) najstarszy bit określa, czy dana jest liczbą dodatnią (gdy ma wartość 0), czy ujemną (gdy ma wartość 1). W drugim przypadku(unsigned) najstarszy bit jest traktowany jak wszystkie inne.