type - long long c++ range
Código portátil-bits por char (4)
Al menos, similar al tamaño entero en las arquitecturas de 64 bits, las plataformas futuras pueden usar un carácter más amplio, con más bits. Los caracteres ASCII pueden quedar obsoletos, reemplazados por unicode. Esta podría ser una razón, así que ten cuidado.
Sé que los estándares de C / C ++ solo garantizan un mínimo de 8 bits por char, y que teóricamente 9/16/42 / cualquier otra cosa es posible, y que por lo tanto todos los sitios sobre cómo escribir códigos portátiles advierten contra asumir 8bpc. Mi pregunta es ¿qué tan "no portátil" es esto realmente?
Dejame explicar. Como lo veo, hay 3 categorías de sistemas:
- Computadoras - me refiero a computadoras de escritorio, computadoras portátiles, servidores, etc. con Mac / Linux / Windows / Unix / * nix / posix / lo que sea (sé que la lista no es estrictamente correcta, pero se entiende la idea). Me sorprendería mucho saber de un sistema como este donde el
char
no tiene exactamente 8 bits. (Por favor, corríjame si estoy equivocado) - Dispositivos con sistemas operativos : esto incluye teléfonos inteligentes y dichos sistemas integrados. Si bien no me sorprendería mucho encontrar un sistema como este en el que el
char
leña sea más tham de 8 bits, no he oído hablar de uno hasta la fecha (de nuevo, infórmenme si no lo sé) - Dispositivos de metal puro : videograbadoras, hornos de microondas, teléfonos celulares viejos, etc. En este campo no tengo la más mínima experiencia, así que aquí puede pasar cualquier cosa. Sin embargo, ¿realmente necesito que mi código sea multiplataforma entre mi escritorio de Windows y mi horno de microondas? ¿Es probable que alguna vez tenga un código común para ambos?
En pocas palabras: ¿hay plataformas comunes (más de% 0.001) (en las categorías 1 y 2 anteriores) donde char
no es de 8 bits? ¿Y es verdad mi suposición anterior?
Normalmente puede suponer que los archivos tendrán bytes de 8 bits o, de no ser así, los archivos de 8 bits de bytes se pueden convertir a un formato nativo sin relleno mediante una herramienta de uso común. Pero es mucho más peligroso suponer que CHAR_BIT == 8. Actualmente ese es casi siempre el caso, pero puede que no siempre sea el caso en el futuro. El acceso de 8 bits a la memoria es cada vez más un cuello de botella.
Por ejemplo, muchos DSP tienen CHAR_BIT
mayor o igual a 16.
usar limits.h
CHAR_BIT
http://www.cplusplus.com/reference/clibrary/climits/
también, cuando quiera usar exactamente un tamaño dado, use stdint.h