z normy ISO/IEC 9899:Do czego przydatne są liczby całkowite o minimalnej szerokości?
7.18.1.2 minimalnej szerokości liczby całkowite
1 Nazwa typedef int_leastN_t oznacza podpisaną typu całkowitą o szerokości co najmniej N, tak że nie jest liczba całkowita ze znakiem typ o mniejszym rozmiarze ma co najmniej określoną szerokość. Tak więc int_least32_t oznacza liczbę całkowitą ze znakiem, której szerokość wynosi co najmniej 32 bity.
Dlaczego powinienem używać tego typu?
Kiedy podejmuję decyzję, jaki typ powinienem wziąć dla zmiennej, której potrzebuję, to pytam siebie: "Jaka będzie największa wartość, jaką może kiedykolwiek mieć?"
Więc mam zamiar znaleźć odpowiedź, sprawdzić, co jest najniższym 2 n, która jest większa niż i wziąć dokładny typ całkowity.
Tak więc w tym przypadku mógłbym użyć również typu całkowitej o minimalnej szerokości. Ale dlaczego? Jak już wiem: nigdy nie będzie to większa wartość. Dlaczego więc wziąć coś, co może czasem pokryć jeszcze więcej, gdy potrzebuję?
wszystkich innych przypadkach mogę Imagin gdzie nawet nieważne jak np:
„Mam typ, który będzie przynajmniej wielkość ...” - The implmentation nie może wiedzieć, co będzie największym (na przykład) dane wejściowe użytkownika, które kiedykolwiek otrzymam, więc dostosowanie typu podczas kompilacji nie pomoże.
"Mam zmienną, w której nie mogę określić, jaki rozmiar wartości będzie przechowywany w czasie wykonywania."
- Jak kompilator może wiedzieć podczas kompilacji? -> Nie może znaleźć również dopasowanego rozmiaru bajtu.
Więc jakie jest użycie tych typów?
Awans do edycji. Nie zdawałem sobie sprawy, że typy "intN_t" mogą być rzeczywiście emulowane w oprogramowaniu, jeśli nie są dostępne w inny sposób. – user694733
@ Jen i dlaczego powinienem użyć int_least32_t zamiast int_fast32_t w tym celu? – dhein
@Zaibis Ponieważ priorytetem jest oszczędność przestrzeni zamiast prędkości. – Jens