C/Przenośność programów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m spacja w limnku
Linia 21:
[[C/Zaawansowane_operacje_matematyczne#Prezentacja_liczb_rzeczywistych_w_pami.C4.99ci_komputera|Rozmiar poszczególnych typów danych]] (np. char, int czy long) jest różna na różnych platformach, gdyż nie jest definiowany w sztywny sposób, jak np. "long int zawsze powinien mieć 64 bity" (takie określenie wiązałoby się z wyżej opisanymi trudnościami), lecz w na zasadzie zależności typu "long powinien być nie krótszy niż int", "short nie powinien być dłuższy od int". Pierwsza standaryzacja języka C zakładała, że typ int będzie miał taki rozmiar, jak domyślna długość liczb całkowitych na danym komputerze, natomiast modyfikatory short oraz long zmieniały długość tego typu tylko wtedy, gdy dana maszyna obsługiwała typy o mniejszej lub większej długości<ref>Dokładniejszy opis rozmiarów dostępny jest w rozdziale [[C/Składnia#Typy_danych|Składnia]].</ref>.
 
Z tego powodu, nigdy nie zakładaj, że dany typ będzie miał określony rozmiar. Jeżeli potrzebujesz typu o konkretnym rozmiarze (a dokładnej konkretnej liczbie bitów wartości) możesz skorzystać z pliku nagłówkowego stdint.h wprowadzonego do języka przez standard ISO C z 1999 roku. Definiuje on typy int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t i uint64_t (o ile w danej architekturze występują typy o konkretnej liczbie bitów).:
* stdint.h
* inttypes.h
* własny plik nagłówkowy
 
 
 
===stdint.h ===
 
wprowadzonego do języka przez standard ISO C z 1999 roku. Definiuje on typy int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t i uint64_t (o ile w danej architekturze występują typy o konkretnej liczbie bitów).
 
 
 
===własny plik nagłówkowy===
Jednak możemy posiadać implementację, która nie posiada tego pliku nagłówkowego. W takiej sytuacji nie pozostaje nam nic innego jak tworzyć własny plik nagłówkowy, w którym za pomocą słówka '''typedef''' sami zdefiniujemy potrzebne nam typy. Np.: