Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fafafa01 en 11 Enero 2017, 00:39 am



Título: ¿Error por falta de corchetes?
Publicado por: fafafa01 en 11 Enero 2017, 00:39 am
Buenas estoy intentando no usar corchetes en el código pero no funciona como quiero, creo que es porque no entiendo bien cuando están explictos (cuando no son necesarios)

Código
  1. while(expresion)
  2.    if(expresion)
  3.        if (expresion)
  4.            while(expresion)
  5.                ;  //solo hace lo de adentro del while
  6.        else
  7.            while(expresion)
  8.                ;  //solo hace lo de adentro del while
  9.    else{
  10.        if(expresion)
  11.            expresión; //solo una linea
  12.        else if(expresion)
  13.            expresion; //solo una linea
  14.        else if(expresion)
  15.            expresion; //solo una linea
  16.        else if(expresion)
  17.            expresion; //solo una linea
  18.        if (expresion) //nuevo if
  19.            expresion; //solo una
  20.    }
  21. if (expresion) //este if no estaria adentro del primer while
  22.    expresion; //solo una linea
  23. else
  24.    expresion; //solo una linea
  25.  

segun lo que yo entiendo por los paréntesis explícitos, todas las sangrías que he dejado son correctas, pero el código no hace lo que pido.


Título: Re: ¿Error por falta de corchetes?
Publicado por: engel lex en 11 Enero 2017, 00:44 am
en cual falla? (no es muy buena practica usarlos así incluso lo ideal de usarlos sin parentesis es cuando se usan "en linea" que colocas la expresión justo al lado)


Título: Re: ¿Error por falta de corchetes?
Publicado por: theluigy13etv en 11 Enero 2017, 07:28 am
Como te mencionó engel lex, no es una buena práctica evitar el uso de llaves.
Personalmente prefiero usar siempre las llaves en todas las estructuras de control de decisión y de bucles (if-else, while, switch, ..)

Código
  1. if (condición) {
  2.    // ....
  3. } else {
  4.    // ...
  5. }
  6.  


Código
  1. if (condición) {
  2.    // ....
  3. } else if (condición) {
  4.    // ...
  5. } else if (condición) {
  6.    // ...
  7. } else if (condición) {
  8.    // ...
  9. } else {
  10.    // ...
  11. }
  12.  

Código
  1. while (expresion) {
  2.    if (expresion) {
  3.        if (expresion) {
  4.            while (expresion) {
  5.                ;  //solo hace lo de adentro del while
  6.            }
  7. } else {
  8.            while(expresion) {
  9.                ;  //solo hace lo de adentro del while
  10.    }
  11. }
  12.    } else {
  13.        if (expresion) {
  14.            expresión; //solo una linea
  15. } else if (expresion) {
  16.            expresion; //solo una linea
  17. } else if (expresion) {
  18.            expresion; //solo una linea
  19. } else if (expresion) {
  20.            expresion; //solo una linea
  21. }
  22.  
  23.        if (expresion) {//nuevo if
  24.            expresion;
  25. }
  26.    }
  27. }
  28.  
  29. if (expresion) { //este if no estaria adentro del primer while
  30.    expresion; //solo una linea
  31. } else {
  32.    expresion; //solo una linea
  33. }
  34.  
  35.  




Título: Re: ¿Error por falta de corchetes?
Publicado por: MAFUS en 11 Enero 2017, 09:38 am
Birrando esa llave el penúltimo if se ejecutaría fuera del primer while.