Quando si utilizza una costante decimale senza suffissi del tipo della costante decimale è il primo che può essere rappresentato, al fine (lo standard attuale C, 6.4.4 Costanti p5):
- int
- long int
- long long int
il tipo della prima espressione è int
, poiché ogni costante con il valore 1024 e 2 può essere rappresentato come int. Il calcolo di queste costanti sarà fatto in tipo int, e il risultato sarà overflow.
Supponendo che INT_MAX sia uguale a 2147483647 e LONG_MAX sia maggiore di 2147483647, il tipo della seconda espressione è long int
, poiché questo valore non può essere rappresentato come int, ma può essere lungo int. Se INT_MAX è uguale a LONG_MAX uguale a 2147483647, il tipo è long long int
.
Sei sicuro che il secondo valore non è ['2147483648'] (https://www.google.co.in/search?q=1024*1024*1024*2&rlz=1C1GIGM_enIN617IN617&oq=1024*1024*1024*2&aqs = chrome..69i57.1172j0j7 & sourceid = cromo & ie = UTF-8)? –
Probabilmente intendevi il valore '2147483648'. La mia risposta lo assume. – 2501
Era stato risolto! Grazie! – mingpepe