Drucken des Long-Int-Werts in C

Lesezeit: 2 Minuten

Benutzer-Avatar
Ranger101

Ich habe zwei Variablen von long int Geben Sie wie unten gezeigt ein:

long int a=-2147483648, b=-2147483648;
a=a+b;

printf("%d",a);

Ich bekomme null. Ich habe versucht, den Typ zu ändern long long intaber ich bekomme immer noch nicht die richtige Antwort.

  • %d erwartet ein int

    – Oliver Charlesworth

    22. Juli 2013 um 3:40 Uhr

Benutzer-Avatar
Café

Sie müssen verwenden %ld drucken a long intund %lld drucken a long long int.

Beachten Sie nur das long long int garantiert groß genug ist, um das Ergebnis dieser Berechnung (oder tatsächlich die von Ihnen verwendeten Eingabewerte) zu speichern.

Sie müssen auch sicherstellen, dass Sie Ihren Compiler in einem C99-kompatiblen Modus verwenden (z. B. mit der -std=gnu99 Option zu gcc). Dies liegt daran, dass die long long int Typ wurde erst 1999 eingeführt; und obwohl viele Compiler implementieren long long int im C90-Modus als Erweiterung die Konstante 2147483648 kann eine Art haben unsigned int oder unsigned long im C90. Wenn dies in Ihrer Implementierung der Fall ist, dann ist der Wert von -2147483648 wird auch einen unsignierten Typ haben und daher positiv sein, und das Gesamtergebnis wird nicht Ihren Erwartungen entsprechen.

  • int main() { long long int a,b; scanf(“%d%d”,&a,&b); a=a+b; printf(“%lld”,a); getch(); 0 zurückgeben; } Immer noch kein Glück, Sir….

    – Ranger101

    22. Juli 2013 um 3:46 Uhr


  • @JijoPi verwenden %lld zum scanf() zu.

    – Chris Loonam

    22. Juli 2013 um 3:48 Uhr

  • int main() { long long int a,b; a=-2147483648; b=a; a=a+b; printf(“%lld”,a); getch(); 0 zurückgeben; }…………….. immer noch keine Antwort … ich glaube, das Zeichen ist verloren …

    – Ranger101

    22. Juli 2013 um 3:51 Uhr


  • @JijoPi – Ich habe Ihr Programm gerade wörtlich ausprobiert und es hat funktioniert. Was ist Ihre Wortgröße? (Was ist die Ausgabe von printf("%d",sizeof(long long int));?)

    – rabensky

    22. Juli 2013 um 4:21 Uhr

  • @cluracan: Welchen Typ die Konstante genau hat, hängt von den Breiten Ihrer Grundtypen ab. Wenn Sie einen C90-Compiler mit 64 Bit haben long intdann die Art von 2147483648 wird vom Typ sein long int (also unterschrieben). Wenn Ihr C90-Compiler jedoch einen 32-Bit-Compiler hat long intdann die Art von 2147483648 wird sein unsigned long int. Dies ist in §3.1.3.2 im C90-Standard definiert: Der Typ einer Integer-Konstante ist der erste der entsprechenden Liste, in der ihr Wert dargestellt werden kann. Dezimalzahl ohne Suffix: int, long int, unsigned long int.

    – Café

    22. Juli 2013 um 11:03 Uhr

Verwenden printf("%ld",a);

Schau mal rein Formatbezeichner für Druckf

Eingaben übernehmen ” lang int ” und Ausgabe ” lang int ” in C ist:

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

Eingaben übernehmen ” lang lang int ” und Ausgabe ” lang lang int ” in C ist:

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

Hoffe du hast es gelöscht..

1383250cookie-checkDrucken des Long-Int-Werts in C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy