Będzie to określone przez architekturę, której używasz. Na układzie Zilog z80 (wspólny układ osadzony) byłyby jednego rozmiaru, podczas gdy na chipsecie x86 mogłyby mieć zupełnie inny rozmiar. Jednak same rozmiary są względem siebie ustalonymi proporcjami. Zasadniczo krótkie i długie nie są typami, ale kwalifikują się do typu int. Krótkie ints będą o jeden rząd wielkości mniejsze niż (zwykłe) int, a long ints będą o rząd wielkości wyższe. Powiedzmy, że twoja Int jest ograniczona do 4 bajtów, krótki kwalifikator ogranicza ją do 4 bajtów, chociaż 2 bajty są również bardzo częste, a długi kwalifikator zwiększa ją potencjalnie do 8 bajtów, chociaż może być mniejszy do 4 bajtów. Należy pamiętać, że zależy to również od długości słowa, więc w systemie 32-bitowym i tak możesz uzyskać maksymalnie 4 bajty na int, co daje tyle samo co zwykłe int. Zatem Short ≤ Int ≤ Long.
Jeśli jednak wydłużysz go ponownie, możesz wcisnąć int do następnej komórki, co daje 8 całych bajtów pamięci. Jest to rozmiar słowa dla maszyn 64-bitowych, więc nie muszą się one martwić o takie rzeczy i po prostu używają jednej komórki dla długich liczb całkowitych, co pozwala im być kolejną kolejnością powyżej standardowych liczb wewnętrznych, podczas gdy długie długie cyfry stają się naprawdę bitowe.
Jeśli chodzi o wybór, sprowadza się do czegoś, na co programiści Java nie muszą się martwić. „Jaka jest twoja architektura?” Ponieważ wszystko zależy od wielkości słowa pamięci danego urządzenia, musisz zrozumieć to z góry, zanim zdecydujesz, którego użyć. Następnie wybierasz najmniejszy rozsądny rozmiar, aby zaoszczędzić jak najwięcej pamięci, ponieważ pamięć ta zostanie przydzielona niezależnie od tego, czy użyjesz wszystkich bitów, czy nie. Więc oszczędzasz, gdzie możesz i wybierasz szorty, kiedy możesz, i ints, kiedy nie możesz i jeśli potrzebujesz czegoś większego niż to, co dajesz zwykłym intymnym; wydłużysz w razie potrzeby, dopóki nie uderzysz w słowo sufit. Następnie musisz podać procedury dużej liczby lub pobrać je z biblioteki.
C może być „przenośnym zestawem”, ale nadal musisz znać swój sprzęt.
<stdint.h>