Size_t
se define como un entero unsigned
, pero el tamaño depende de si está en una máquina de 32 o 64 bits. ¿Cuál es la forma correcta y portátil de imprimir un size_t
?¿Cuál es la forma correcta de usar printf para imprimir un tamaño_t?
Respuesta
Trate de usar la cadena %zu
formato
size_t val = get_the_value();
printf("%zu",val);
La porción z es un especificador de longitud que dice el argumento será size_t de longitud.
Fuente - http://en.wikipedia.org/wiki/Printf#printf_format_placeholders
size_t es un tipo sin signo por lo que aún necesita usar 'u' como el tipo de formato y el modificador de longitud 'z'. –
Además, el modificador 'z' es una adición C99 a printf, por lo que no es estrictamente una característica estándar de C++. –
@Charles corrigió la porción u y agregué una etiqueta C al comienzo. Esperaría que esto sea mucho más una característica C que C++, ya que C++ puede seguir la ruta cout. – JaredPar
Hay una etiqueta de C++ en esto, así cout <<
es otra respuesta posible.
Esto es sorprendentemente difícil de obtener en todas las versiones de C. En C90, la conversión a unsigned long
debería funcionar, pero eso bien podría no funcionar en C99, y las soluciones C99 no necesariamente funcionarán en C90. La capacidad de distinguir de forma fiable entre C90 y C99 se introdujo en los cambios de 1995 (especificando los valores permitidos para __STDC__
). No creo que haya una forma completamente portátil que funcione para C90, C99 y C++, aunque existen soluciones para cada una de ellas.
creo que la respuesta del C++ es:
std::size_t n = 1;
std::cout << n;
Por estilo C IO que es un poco más complicado. En C99 agregaron el modificador de longitud z
para los valores size_t
. Sin embargo, previo a TR1 esto no es apoyado lo que se quedan con la fundición a un tamaño específico como:
std::size_t n = 1;
std::printf("%lu\n", static_cast<unsigned long>(n));
Por otra parte, unsigned long long
no es realmente el apoyo de C++ de todas formas por lo que el anterior funcionará bien ya unsigned long
es el tipo integral legal más grande. Después de TR1, puede usar %zu
de forma segura para los valores size_t
.
- 1. ¿Cuál es la forma correcta de usar scala.io.Source?
- 2. ¿Cuál es la forma correcta de usar bitfields en C?
- 3. ¿Cuál es la forma correcta de usar TypeForwardedToAttribute?
- 4. ¿Cuál es la forma correcta de usar @synchronized?
- 5. ¿Cuál es la forma correcta de usar maxAge con Express.js?
- 6. ¿Cuál es la forma correcta de redirigir?
- 7. ¿Cuál es la forma correcta de cargar un ListBox?
- 8. ¿Cuál es la forma correcta de configurar un TextEncryptor espiral para usar con Heroku
- 9. ¿Cuál es la forma correcta para bloquear áreas de código
- 10. ¿Cuál es la forma correcta de desconectar un MediaController?
- 11. ¿Cuál es la forma correcta de declarar un Doctype HTML5?
- 12. ¿Cuál es la firma de printf?
- 13. Objective-C "mensajes": ¿cuál es la forma correcta de leerlo?
- 14. ¿Cuál es la sintaxis correcta para usar Database.ExecuteSqlCommand con parámetros?
- 15. ¿Cuál es la forma correcta de usar el tipo Guid en un archivo XSD?
- 16. ¿Cuál es la forma correcta de usar un registrador en una clase Serializable de Java?
- 17. ¿Cuál es la forma correcta de sangrar Erlang?
- 18. ¿Cuál es la forma correcta de mostrar la InnerException completa?
- 19. Cuál es la forma correcta de cerrar una conexión TCP
- 20. ¿Cuál es la forma correcta de declarar y usar un puntero ARCHIVO * en C/C++?
- 21. ¿Cuál es la forma correcta de ajustar [NSString stringWithFormat:]?
- 22. ¿Cuál es la forma correcta de pasar una excepción? (C#)
- 23. ¿Cuál es la forma correcta de degradar una gema?
- 24. cuál es la forma correcta de separar datos en couchbase
- 25. ¿Es un repositorio estático una forma correcta de usar NHibernate?
- 26. ¿Cuál es la forma correcta de manejar eventos en C++?
- 27. ¿Cuál es la forma correcta de representar elementos XML nulos?
- 28. ¿Cuál es la forma correcta de ocultar una etiqueta HTML?
- 29. ¿Cuál es la forma correcta de detectar Opera usando jQuery?
- 30. ¿Cuál es la forma correcta de cerrar H2?
Posible duplicado de [cadena de formato de plataforma cruzada para variables del tipo de tamaño \ _t?] (Http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size -t) –
@CiroSantilli'm iro iro 视 视 视 Lo dejo abierto porque el duplicado contiene algunas respuestas incorrectas, mientras que esta tiene una respuesta bien aceptada. – edmz
@black, también puede proponer que se cierre en el otro sentido. Cualquiera de los dos está bien para mí. –