Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/08/2012, 13:18
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 5 meses
Puntos: 22
Respuesta: Piedra, Papel, Tijeras (C) Problema

Cita:
ju es una variable de tipo int por lo tanto compararlo con el ascii de esos caracteres no tiene sentido ya que siempre va a ser falso la condicion...
Hola cesar_casla.

Es cierto que 'ju' podría haber sido declarado como char, pero disiento con tu concepto en este caso.

En C/C++ existen moldeos explícitos e implícitos, en este caso aplica el último. Por ejemplo:
Código C:
Ver original
  1. {
  2.   char ch = 'A';
  3.   int  i = ch;  // cast implicito
  4.  
  5.   printf("%c %d\n",i ,i);
  6.   i += 1;
  7.   printf("%c %d\n", i ,i);
  8.   ...
  9.   for(i=ch; i < ch+26; i++ ) printf("%c", i);
  10.   ...
  11. }


Si probamos este código:
Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.  int ju;
  6.  
  7.   ju = 49;
  8.   if (ju == '1')
  9.     printf("ju es el caracter 1 !\n");
  10.  
  11.   ju = 50;
  12.   if (ju == '2');
  13.     printf("Ahora ju es el caracter 2 !\n");
  14.  
  15.    ju = 52;
  16.   if (ju == '3');
  17.     printf("Ahora ju es el caracter 3 !\n");
  18.  
  19.   ju = 10;
  20.   if (ju == '\n')
  21.     printf("Ahora ju es nueva linea !\n");
  22.  
  23.   getchar();
  24. }
Queda claro que se aplica el cast apropiado y el resultado de los condicionales son correctos.

Saludos.

Última edición por ecfisa; 29/08/2012 a las 13:24