La dimensione dei tipi numerici non è definita nello standard C++, sebbene le dimensioni minime siano. Il modo per dire che dimensioni sono sulla vostra piattaforma è quello di utilizzare numeric limits
Ad esempio, il valore massimo per un int può essere trovato:
std::numeric_limits<int>::max();
computer non funzionano in base 10, che significa che il valore massimo sarà sotto forma di 2 n -1 a causa di come i numeri di rappresentano in memoria. Prendiamo ad esempio otto bit (1 byte)
0100 1000
Il diritto più bit (numero) quando impostato su 1 rappresenta 2 , il bit successivo 2 , quindi 2 e così via fino otteniamo il bit più a sinistra che se il numero non è firmato rappresenta 2 .
Così il numero rappresenta 2 + 2 = 64 + 8 = 72, perché il quarto bit da destra e 7 bit destra sinistra sono impostati.
Se poniamo tutti i valori di 1:
11111111
Il numero è ora (supponendo senza segno)
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 = 2 - 1
E come possiamo vedere, questo è il più grande valore possibile che può essere rappresentato con 8 bit.
Sulla mia macchina e int e un lungo sono gli stessi, ognuno in grado di tenere tra -2 -2 - 1. Nella mia esperienza la dimensione più comune sulla moderna macchina desktop a 32 bit.
Anche il titolo aveva originariamente detto "C/C++". – caf
perché intervallo lungo positivo int lungo == intervallo negativo –
@mohamedabdallah: vedere l'ultimo paragrafo della risposta: gli intervalli standard C sono in questo modo per consentire le rappresentazioni del complemento o della grandezza del segno. – caf