Pregunta

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

Supongamos que unsigned_foo es un unsigned long, entonces yo trate de:

  • 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 de impresión algún tipo de -123123123 el número en lugar de unsigned long lo que tengo.

¿Fue útil?

Solución

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

Otros consejos

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

Para int %d

Para long int %ld

Para long long int %lld

Para unsigned long long int %llu

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

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

Esto será de gran ayuda ...

El formato es %lu.

Por favor, compruebe acerca de los distintos tipos de datos y su uso en el printf aquí

La correcta especificador para el unsigned long es %lu.

Si usted no está recibiendo el valor exacto que usted está esperando, a continuación, puede haber algunos problemas en el código.

Por favor, copie el código aquí.Entonces tal vez alguien puede decir mejor lo que es el problema.

Yo tenía el mismo problema.Tratar de "%ul", a mí me funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top