No hace mucho tiempo, alguien me dijo que longno son 64 bits en máquinas de 64 bits y que siempre debería usar int. Esto no tenía sentido para mí. He visto documentos (como el del sitio oficial de Apple) que dicen que en longrealidad son 64 bits al compilar una CPU de 64 bits. Miré qué era en Windows de 64 bits y encontré
- Windows:
longyintpermanecen de 32 bits de longitud, y se definen nuevos tipos de datos especiales para enteros de 64 bits.
(de http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2 )
¿Qué debo usar? ¿Debo definir algo como uw, sw((sin) ancho firmado) como longsi no en Windows, y de lo contrario hacer una verificación en el tamaño de bits de la CPU de destino?
sizeof(long) == 8, incluso en Windows :-)
size_to un tipo de iterador para iterar, no intoint64_t
size_testo se vuelve complicado cerca de los números negativos, porque size_tno está firmado. Así for(size_t i=0; i<v.size()-2; i++)falla por tamaño del vector 0 y 1. Otro ejemplo: for(size_t i=v.size()-1; i>=0; i--).
size_tvalores, entonces el resultado debe mantenerse en una variable de ptrdiff_ttipo, ¡que está diseñado para ser lo suficientemente grande como para contener dicho resultado y es un tipo con signo precisamente por esa razón!)