Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-04-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
unsigned __int64 vs int64u

Pues eso, quisiera saber cual es más estándar de los dos ya que he buscado por Internet y no me ha quedado nada claro. ¿Y cuál es mejor usar en builder? Otra duda es saber que tendría que poner en sprintf para cada uno de ellos ya que he leído que %llu puede valer para ambos pero que unsigned long long no tiene por qué ser 64 bits en todas las máquinas.
Responder Con Cita
  #2  
Antiguo 18-04-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
La verdad es que no sé qué poner, pero siguiendo la lógica de C en esto de definición de datos (y si no se me ha olvidado ni ha cambiado mucho con el C99 y posteriores), yo usaría "unsigned long long int", que creo haberlo visto en algún código hace años.

De todas formas, en C (y de nuevo si no ha cambiado mucho con el C99 y posteriores), los nombres precedidos de uno o dos caracteres de subrayado suelen indicar "para uso interno solamente", así que yo optaría por "int64u".

Sin embargo, dependiendo del compilador quizá bastara un "unsigned long int" (por ejemplo, en el GCC en modo 64bit), pero no sé si será así en Builder.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 18-04-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
La idea es tener al menos 64 bits, si es más mejor pero creo que con 64 va bien.
Según lo que me dices,si unsigned long int en modo de 64 bits (entiendo por eso a un procesador de 64 con un S.O. de 64) tiene 64 bits, en ese mismo modo un unsigned long long int ¿seria 128 bits? Si fuese así y no corro el riesgo de que unsigned long long int pueda valer menos de 64 bits me valdría tanto o más que los que indico yo.
También tengo entendido que unsigned long long int no es reconocido por los visual studio y que estos usan LONG LONG o algo así. No se que tan cierto es.

Última edición por aguml fecha: 18-04-2015 a las 23:27:27.
Responder Con Cita
  #4  
Antiguo 19-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

Aquí los tipos estandar long long int (C++ 11). El mismo tipo lo podemos ver con otras denominaciones vg.: Visual Studio, sin embargo también aceptarán el estandard unsigned long long.

Podes obtener los límites míminos y máximos de un tipo de este modo:
Código PHP:
#include <iostream>
#include <limits>

int main() {
  
std::cout << std::numeric_limits<unsigned long long>::min() << std::endl;
  
std::cout << std::numeric_limits<unsigned long long>::max() << std::endl;
  return 
0;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 26-09-2016
exmachina exmachina is offline
Miembro
NULL
 
Registrado: sep 2016
Ubicación: 127.0.0.1
Posts: 30
Poder: 0
exmachina Va por buen camino
Cita:
Empezado por aguml Ver Mensaje
Pues eso, quisiera saber cual es más estándar de los dos ya que he buscado por Internet y no me ha quedado nada claro. ¿Y cuál es mejor usar en builder? Otra duda es saber que tendría que poner en sprintf para cada uno de ellos ya que he leído que %llu puede valer para ambos pero que unsigned long long no tiene por qué ser 64 bits en todas las máquinas.
Tanto en C++ Builder como en Visual Studio existen estos tipos de datos:

unsigned __int64 -> entero de 64 bits sin signo
__int64 -> entero de 64 bits con signo

Estos son equivalentes a los anteriores
unsigned long long -> equivale a unsigned __int64
long long -> equivale a __int64

__int(x) es especifico de microsoft


sprint:
Código PHP:
unsigned __int64 n =  std::numeric_limits<unsigned __int64>::min();
char buf[1024];
//sprintf(buf, "El valor minimo del tipo unsigned __int64 es: %I64d", n);
sprintf(buf"El valor minimo del tipo unsigned __int64/unsigned long long es: %I64d"n);

__int64 ns =  std::numeric_limits<__int64>::min();
char bufs[1024];
sprintf(bufs"El valor minimo del tipo __int64/long long es: %I64d"ns); 
Responder Con Cita
  #6  
Antiguo 28-09-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Gracias por la aclaración.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conversión unsigned char a AnsiString NPIdea C++ Builder 3 20-01-2011 09:28:51


La franja horaria es GMT +2. Ahora son las 11:31:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi