Lange int-waarde afdrukken in C

Ik heb twee variabelen van long intType zoals hieronder weergegeven:

long int a=-2147483648, b=-2147483648;
a=a+b;
printf("%d",a);

Ik word nul. Ik heb geprobeerd het type te veranderen in long int, maar ik krijg nog steeds niet het juiste antwoord.


Antwoord 1, Autoriteit 100%

U moet %ldgebruiken om een ​​long int, en %lldaf te drukken om een ​​long int.

Merk op dat alleen long long intgroot genoeg is om het resultaat van die berekening (of, inderdaad, de ingangswaarden die u gebruikt) op te slaan.

U moet er ook voor zorgen dat u uw compiler in een C99-compatibele modus gebruikt (bijvoorbeeld met behulp van de -std=gnu99OPTIE AAN GCC). Dit komt omdat de long intType pas bij C99 is geïntroduceerd; En hoewel vele compilers implementeren long long intin de C90-modus als een extensie, kan de constante 2147483648een type unsigned intof unsigned longin C90. Als dit het geval is in uw implementatie, dan heeft de waarde van -2147483648ook niet-ondertekend type en zal daarom positief zijn, en het algehele resultaat is niet wat u verwacht.


Antwoord 2, Autoriteit 5%

Gebruik printf("%ld",a);

Bekijk formatteerspecificaties voor printf


Antwoord 3, Autoriteit 4%

Om input te gebruiken “Lange Int ” en uitvoer “Lange Int ” in C is:

long int n;
scanf("%ld", &n);
printf("%ld", n);

Invoer ” long long int” en output ” long long int” in C is:

long long int n;
scanf("%lld", &n);
printf("%lld", n);

Ik hoop dat je het hebt gewist..

Other episodes