[ Foro de C ]

a-='a'-'A'

11-Oct-2023 23:13
Invitado (Antonio)
1 Respuestas

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


30-Nov-2023 01:03
Invitado (ram?n)

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.)