Cómo imprimirf “unsigned long” en C?

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

Supongamos unsigned_foo es unsigned long , luego bash:

  • 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 vez de unsigned long que tengo.

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

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

  • %lu para unsigned long
  • %llu para unsigned long long

Para int %d

Por int largo %ld

Por mucho tiempo int %lld

Para unsigned long long int %llu

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

Esto será útil. . .

El formato es %lu .

Por favor, consulte sobre los otros tipos de datos y su uso en printf aquí

El especificador correcto para long sin signo es %lu .

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

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