Wie drucke ich “unsigned long” in C?

Lesezeit: 3 Minuten

Benutzeravatar von bodacydo
bodacydo

Ich kann nie verstehen, wie man druckt unsigned long Datentyp in C.

Vermuten unsigned_foo ist ein unsigned longdann versuche ich:

  • printf("%lu\n", unsigned_foo)
  • printf("%du\n", unsigned_foo)
  • printf("%ud\n", unsigned_foo)
  • printf("%ll\n", unsigned_foo)
  • printf("%ld\n", unsigned_foo)
  • printf("%dl\n", unsigned_foo)

Und alle von ihnen drucken irgendeine Art von -123123123 Zahl statt unsigned long das ich habe.

%lu ist das richtige Format für unsigned long. Klingt so, als ob hier andere Probleme im Spiel sind, z. B. Speicherbeschädigung oder eine nicht initialisierte Variable. Vielleicht zeigen Sie uns ein größeres Bild?

  • Hoppla, %lu hat diesmal funktioniert. Vielen Dank. Etwas anderes muss vorher passiert sein und es hat nicht funktioniert.

    – bodacydo

    9. Juli 2010 um 4:52 Uhr

  • @bodacydo: Wenn Sie einen Fehler haben, erscheint er möglicherweise halbzufällig … stellen Sie sicher, dass Ihre Variable einen gültigen Wert hat, bevor Sie versuchen, sie zu drucken.

    – Thanatos

    9. Juli 2010 um 4:54 Uhr

  • Selbst wenn die Variable nicht initialisiert ist, sollte printf auf keinen Fall einen Punkt erreichen, an dem es ein Minuszeichen ausgeben könnte, wenn der Formatbezeichner war %lu. Technisch gesehen ist es ein undefiniertes Verhalten, aber in Wirklichkeit hat die Variable einen unvorhersehbaren Wert, der an printf übergeben wird, was printf dann als unsigned interpretiert. Ich vermute, das ursprüngliche Problem von Bodacydo bestand darin, dass der Flow einen falschen printf-Aufruf anstelle des beabsichtigten erreichte …

    – R.. GitHub HÖR AUF, EIS ZU HELFEN

    9. Juli 2010 um 6:24 Uhr

  • @Anisha Kaul: %lu ist eine gültige Konvertierungsspezifikation, %ul nicht. %luherausgebrochen ist: % — startet eine „Konvertierungsspezifikation“; l — der Längenmodifikator, l meint “[unsigned] lange int”; u — der Konvertierungsspezifizierer, u ist für ein unsigned int als Dezimalzahl ausgedruckt werden. Weil wir den Längenmodifikator angegeben haben les akzeptiert dann ein unsigned long int. Die Buchstaben muss in dieser Reihenfolge sein: Prozent, Länge, Umrechnung. (Es gibt ein paar weitere Optionen, wie Breite und Genauigkeit, die Sie hinzufügen können. Siehe Manpageda es all dies genau dokumentiert!)

    – Thanatos

    14. Februar 2012 um 7:12 Uhr

  • %ul druckt einfach unsigniert (mit %u) und dann wörtlich den Buchstaben “l”. Genauso wie “%uw” ohne Vorzeichen gedruckt wird, gefolgt vom Buchstaben “w”. % startet die convspec, u (oder irgendein anderes Zeichen, wie d, s, c…) beendet sie.

    – Weky

    11. Juni 2013 um 3:27 Uhr


Zum int %d

Zum lang int %ld

Zum lang lang int %lld

Zum unsigned lang lang int %llu

Benutzeravatar von NealCaffery
NealCaffery

  • %lu zum unsigniert lang
  • %llu zum unsigniert lang lang

  • Yoda-Konvention: „unsigned long“ „(l)ong (u)nsigned“ ist.

    – Reb.Kabine

    11. Dezember 2016 um 22:20 Uhr

Von all den Kombinationen, die Sie ausprobiert haben, %ld und %lu sind die einzigen, die überhaupt gültige printf-Formatspezifizierer sind. %lu (lange Dezimalzahl ohne Vorzeichen), %lx oder %lX (langes Hex mit Klein- oder Großbuchstaben) und %lo (long octal) sind die einzigen gültigen Formatbezeichner für eine Variable vom Typ unsigned long (natürlich können Sie Feldbreite, Genauigkeit usw. Modifikatoren zwischen den hinzufügen % und die l).

Benutzeravatar von Praveen S
Praveen S

Das Format ist %lu.

Bitte informieren Sie sich über die verschiedenen anderen Datentypen und deren Verwendung in printf hier

  • Dort wird diverses nicht standardmäßiges Verhalten dokumentiert, ohne es als nicht standardmäßig zu kennzeichnen. POSIX ist der am einfachsten zugängliche Online-Standard für printf; Erweiterungen jenseits von ISO C sind mit dem Tag „CX“ gekennzeichnet: opengroup.org/onlinepubs/9699919799/functions/fprintf.html

    – R.. GitHub HÖR AUF, EIS ZU HELFEN

    9. Juli 2010 um 6:27 Uhr

Benutzeravatar von Jason Sundram
Jason Sunram

int main()
{
    unsigned long long d;
    scanf("%llu",&d);
    printf("%llu",d);
    getch();
}

Dies wird hilfreich sein. . .

  • Dort wird diverses nicht standardmäßiges Verhalten dokumentiert, ohne es als nicht standardmäßig zu kennzeichnen. POSIX ist der am einfachsten zugängliche Online-Standard für printf; Erweiterungen jenseits von ISO C sind mit dem Tag „CX“ gekennzeichnet: opengroup.org/onlinepubs/9699919799/functions/fprintf.html

    – R.. GitHub HÖR AUF, EIS ZU HELFEN

    9. Juli 2010 um 6:27 Uhr

Benutzeravatar von wizzwizz4
wizzwizz4

Der richtige Bezeichner für unsigned long ist %lu.

Wenn Sie nicht den genauen Wert erhalten, den Sie erwarten, kann es zu Problemen in Ihrem Code kommen.

Bitte kopieren Sie hier Ihren Code. Dann kann dir vielleicht jemand besser sagen was das Problem ist.

1427770cookie-checkWie drucke ich “unsigned long” in C?

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

Privacy policy