Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[c/c++] Int En 64bits

Iniciado por Virgil, 28 de Abril de 2004, 09:39:06 PM

« anterior - próximo »

Virgil

 ¿Alguien sabe si en plataformas de 64 bits los números enteros (de tipo fundamental int) en lenguaje C/C++ dejan de ser 4 bytes?

Recuerdo que el plataformas de 16 bits (época 286 para atrás) el int eran 2 bytes. Tengo claro que la especificación del lenguaje sólo asegura que:

sizeof(short) <= sizeof(int) <= sizeof(long)

Pero también he visto por ahí el agregado de int64 ¿es esto oficial o es un typedef?

Mi duda surge debido a que si se cambia los short de 2 a 4 bytes, los int de 4 a 8 y los long de 4 a 8. Tendría que modificar un montón de programas (especialmente aquellos que levantan estructuras de archivos).

Schaffer

 Ahi tienes una cutretabla de las modelos basicos, comparados con los modelos basicos de 32 bits.

El modelo que parece que va a imponerse es el LP64, que es el que menos problemas daria en la conversion de programas. Exceptuando los que asuman sizeof(int)==sizeof(*void).

Tipo...........LP64....ILP64....LLP64....ILP32.....LP32

char..............8..........8..........8............8...........8
short...........16........16.........16.........16.........16
_int32.....................32                                        
int...............32........64.........32.........32.........16
long............64........64.........32.........32..........32
long long.............................64  
puntero.......64.......64.........64.........32..........32

Mas info en Google.

Zaelsius

 No estoy seguro acerca del tipo int, pero el tipo size_t de libc si que ha cambiado, con lo cual afecta de pleno a los programas C que usan ficheros. Más información y guias de portabilidad a 64 bits en:

AMD Developer Center

Recomiendo encarecidamente consultar estos PDF's de la GDC 2004:
http://www.amd.com/us-en/Processors/Develo...1_10892,00.html

Uno de ellos, el de la presentación de Richard Tsao(Crytek) habla precisamente sobre portar aplicaciones a 64 bits. Si teneis banda ancha tambien recomiendo los videos de las presentaciones :).

shephiroth

 Buenas. Puede que la información no sea muy fiable, pero segun tengo entendido el tipo int64 que tu dices (de seguro lo viste en .net) es un tipo (o typedef como lo quieras llamar) que se ha sacado microsoft de debajo del brazo.......es decir, un int normal (de toda la vida) para microsoft ahora se llama int32, mientras que los double y float al usar 64 bits les ha pasado a llamar int64.

Por lo q te he leido, no te preocupes, puedes seguir utilizando tus programas con int, pero no durante cuanto tiempo ;)

SALUDOS

sés

 Yo siempre creí que el tamaño de un int dependía del tamaño de palabra del micro. Si ahora se queda en 32 y el long es de 64... ¿Cómo podemos tener un tipo de dato fijo de 32 bits que funcione en todos los sistemas?

A lo mejor es que es temprano y estoy totalmente dormido, pero no lo veo :blink:  
Soy indeciso... ¿o no?

AgeR

 No controlo estos temas, pero no se calientan demasiado la cabeza? Por que no simplemente añadir un nuevo tipo int64 o lo que sea y dejan el actual int como estaba?

O sea que si usas un int de 64 bits en tu programa va a petar en los ordenadores no-64-bits? Harán algo para que siga siendo compatible el código no?

Vamos, por decir algo, porque no tengo ni idea  (nooo)

Saludos!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.