Tengo entendido que el espacio ocupado por una variable de tipo char (o cualquier otro tipo) no es una cantidad fija de bytes, que el estándar establece un mínimo y un máximo para cada tipo y que la cantidad de espacio asignada a cada tipo varía de una computadora a otra, y también entre compiladores. Esto es lo que indica el libro "Thinking in Cpp".
Pero hace poco me preguntaron si un caracter (así, a secas) ocupa siempre un byte.
Y la verdad es que no estoy seguro
Según los comentarios de la siguiente página, eso es correcto:
http://usando.info/blog/2007/06/bits...-entender.html
Pero en la wikipedia, en este enlace:
http://es.wikipedia.org/wiki/UTF-8
Indica que UTF-8 es un formato de codificación de caracteres... y en sus características indica lo siguiente:
Cita: El número de bytes depende exclusivamente del código de carácter asignado por Unicode y del número de bytes necesario para representarlo.
Y luego indica que esa cantidad varía entre 1 y 4 bytes.
Luego recordé los operadores a nivel de bit en C++ e hice el siguiente programa (con ayuda de un libro) que convierte cualquier caracter a binario:
Código:
#include <iostream>
using namespace std;
int main()
{
char c;
cout<<"Ingrese un caracter: ";
cin>>c;
cout<<"\'"<<c<<"\' en binario: ";
for(short i=7; i>=0; --i)
if( c & (1<<i) )
cout<<1;
else cout<<0;
return 0;
}
Sin embargo, esto no tiene nada que ver con el espacio de almacenamiento que ocupa un caracter
(o eso creo)
Es que el programa toma el caracter y al mostrarlo en binario, muestra convertido a binario su código correspondiente en ASCII.
Por ejemplo, si ingreso el caracter 1, va a mostrar 49 en binario (y eso no tiene nada que ver me parece).
Gracias de antemano.