[ Foro de C ]
Alguien me sabe interpretar esto
int diferencia(char a, char b) {
if ( !((a>='A' && a<='Z') || (a>='a' && a<='z')) )
return -1;
if ( !((b>='A' && b<='Z') || (b>='a' && b<='z')) )
return -1;
if (a>'Z')
a -= 'a'-'A';
if (b>'Z')
b -= 'a'-'A';
if (a>b)
return a-b;
else
return b-a;
}
Un saludo
hola antonio
el caracter 'a' tiene un valor ascii mayor a de 'A'
al restar 'a' y 'A' obtienes un valor que te permite
pasar las mayúculas a minúsculas y viceversa
ya que son correlativas, es decir hay la misma
difernencia entre la a y A que entre x y X
si ese valor se lo restas a una minúscula obtienes
una mayúscula, si se lo sumas a una mayúscula
obtienes una minúscula
en este código el valor de 'a' - 'A' al restarlo a una minúscula ya que es
mayor que 'Z' obtienes una mayúscula
y así estando todas las letra en mayúsculas al restarlas
obtienes la separación que hay entre ellas
saludos ;-)
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)