float c printf long-integer unsigned format-specifiers

float - ¿Cómo se imprime “sin firma larga” en C?



printf string c (8)

De todas las combinaciones que probaste, %ld y %lu son las únicas que son especificadoras de formato de printf válidas. %lu (decimal sin signo largo), %lx o %lX (hexágono largo con letras mayúsculas o minúsculas) y %lo (octal largo) son los únicos especificadores de formato válidos para una variable de tipo sin signo largo (por supuesto, puede agregar el campo Modificadores de ancho, precisión, etc. entre el % y el l ).

Nunca puedo entender cómo imprimir tipos de datos unsigned long en C.

Supongamos que unsigned_foo es un unsigned long , luego intento:

  • 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)

Y todos ellos imprimen algún tipo de número -123123123 lugar de un unsigned long que tengo.


El especificador correcto para long sin signo es %lu .

Si no obtiene el valor exacto que espera, puede haber algunos problemas en su código.

Por favor copie su código aquí. Entonces, tal vez alguien pueda decirle mejor cuál es el problema.


El formato es %lu .

Por favor, consulte los otros tipos de datos y su uso en printf here


Para int %d

Para larga int %ld

Por mucho tiempo largo int %lld

Para unsigned long long int %llu


Yo tuve el mismo problema. Prueba "% ul", funciona para mí.


%lu es el formato correcto para unsigned long . Parece que hay otros problemas en juego aquí, como la corrupción de la memoria o una variable sin inicializar. Tal vez nos muestre una imagen más grande?


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

Esto será útil. . .


  • %lu por largo sin firmar
  • %llu para unsigned long long