it-swarm.com.de

Wie printf "unsigned long" in C?

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

Angenommen, unsigned_foo ist ein unsigned long, dann 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 eine Art -123123123 Nummer anstelle von unsigned long, die ich habe.

313
bodacydo

%lu ist das richtige Format für unsigned long. Klingt so, als gäbe es hier andere Probleme, wie z. B. Speicherbeschädigung oder eine nicht initialisierte Variable. Zeigen Sie uns vielleicht ein größeres Bild?

465
Thanatos
  • %lu für nsigned long
  • %llu für lange ohne Vorzeichen
27
NealCaffery

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

22
R..

Für int%d

Für long int%ld

Für long long int%lld

Für nsigned long long int%llu

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

Das wird hilfreich sein. . .

Das Format ist %lu.

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

9
Praveen S

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

Wenn Sie nicht den genauen Wert erhalten, den Sie erwarten, liegt möglicherweise ein Problem in Ihrem Code vor.

Bitte kopieren Sie Ihren Code hier. Dann kann dir vielleicht jemand besser sagen, wo das Problem liegt.

8
Kumar Alok