2014-05-25 3 views
6

In einem Beispiel für "C Primer Plus" hat der Autor %ul Formatbezeichner (sowohl in scanf und printf) für unsigned long verwendet. Wenn ich versuche, das Problem zu verallgemeinern, scheint es, dass die %ul in meinem Computer etwas falsch macht. Aber mit %lu löste das Problem.Was ist der Unterschied zwischen% ul und% lu C-Format-Spezifizierer?

Eigentlich möchte ich lieber über den Unterschied zwischen %ul und %lu, anstatt sich auf das Problem und die Zeile der Codes konzentrieren. Vielleicht könnte ich herausfinden, was los ist.

Searching nicht geben Sie mir etwas Nützliches (außer, dass „sie sind anders“).

Jede Erklärung oder einen Link/Verweis wird geschätzt.

Antwort

25

%lu ist korrekt, während %ul ist inkorrekt.

Der Formatbezeichner printf folgt dem Formular %[flags][width][.precision][length]specifier.

u ist ein Spezifizierer "unsigned Dezimalzahl" bedeutet.

l ist eine Länge Modifikator Bedeutung "lang".

Die Länge Modifikator vor der Umwandlung Spezifizierer gehen sollte, was bedeutet, %lu korrekt ist.

+7

'% ul' ist richtig, aber wird nicht funktionieren, da die OP zu erwarten ist. Es wird die Zahl mit dem Suffix "l" am Ende ausgedruckt, weil es nur '% u' ist,' l' ist außerhalb des Formats –

+0

@ LưuVĩnhPhúc Großartiger Punkt. –

Verwandte Themen