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
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).
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
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
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.
14277700cookie-checkWie drucke ich “unsigned long” in C?yes