Errores de compilación If y switch

Éstas estructuras nos permiten condicionar un programa, es decir, que sólo se haga una porción de código.

Errores comunes en el if

Poner punto y coma después de la comparación

Estás haciendo un programa, que necesita de una comparación, lo corres pero parece ser que la condición no entra…

#include <stdio.h>
#include <stdlib.h>
int main(){
int y=45;
int i=l;
if (i==0);{
printf("%i",y);
}
}

En este programa, lo que inicialmente se busca es comparar si i vale 0, si esta condición resulta verdadera, se imprimirá el valor de y. Pero, debido al punto y coma, aunque i vale 1, se imprimirá el valor de y.

Éste error se debe a que al momento de poner un punto y coma ; después de la comparación, todo lo que queda después no entra en la condición.

El programa toma como instrucción lo que está entre la condición y el punto y coma, y si no hay nada entre éstos dos, seguirá con las instrucciones que se encuentren debajo de ésta.

Comparar mal

Un error muy frecuente que cometemos a la hora de programar, es asignar en lugar de comparar.

#include <stdio.h>
#include <stdlib.h>
int main(){
int y=45;
int i=2;
if (i=1){
printf("%i",y);
}
}

En este caso, aunque i valga 2 se imprimirá el valor de y, haciendo caso omiso de la comparación.

Asignar es darle un valor a una variable, esto se hace con un sólo igual =, mientras que la comparación lleva doble igual ==

Cuando en un if ponemos una asignación en lugar de unas comparación lo que hará el programa, igual que con el punto y coma, es omitir la estructura.

En la siguiente imagen podrás observar cómo se hace uso correcto de un if.

#include <stdio.h>
#include <stdlib.h>
int main(){
int y=45;
int i=2;
if (i==1){
printf("%i",y);
}

Errores en el switch

No poner las llaves después de iniciar el switch

Es importante recordar la estructura, pues si cometemos este error, el programa ni siquiera va a correr

switch (variable)

{

}

#include<stdio.h>
#include<stdlib.h>
int main(){
int opcion;
int n1=5;
int n2=6;
int resultado;
printf("1.Suma \n2.Resta \n3.Multiplicacion \nOpcion: ");
scanf("%i%*c", &opcion);
switch (opcion)
case 1:
resultado=n1+n2;
break;
case 2:
resultado=n1-n2;
break;
case 3:
resultado=n1*n2;
break;
printf("%i", resultado);
}

El error no lo marca inmediatamente después de que se omiten las llaves, lo marca dentro de los case´s

Uso incorrecto de case’s

El switch funciona con todos los tipos de variables y esta diferencia se tiene que poner en los case´s a la hora de comparar.

Por ejemplo cuando tenemos un switch de números enteros es suficiente con poner case 1:

Cuando es un dato tipo char.. case ‘a’:

Para un String.. case “hola”:

Si omitimos alguna de estas diferencias y lo ponemos de manera incorrecta el programa si correrá, pero ignorara todo lo que esté dentro del switch..

#include<stdio.h>
#include<stdlib.h>
int main(){
int opcion;
int n1=5;
int n2=6;
int resultado;
printf("1.Suma \n2.Resta \n3.Multiplicacion \nOpcion: ");
scanf("%i%*c", &opcion);
switch (opcion){
case '1':
resultado=n1+n2;
break;
case '2':
resultado=n1-n2;
break;
case '3':
resultado=n1*n2;
break;
printf("%i", resultado);
}
}

En este caso se está usando un switch entero, pero se está comparando como si fuera char…

Corriendo el ejemplo anterior obtenemos que la suma de 5+9=69 esto es debido a que se ignora el switch.

Finalmente, un ejemplo de un uso correcto del switch:

#include<stdio.h>
#include<stdlib.h>
int main(){
int opcion;
int n1=5;
int n2=6;
int resultado;
printf("1.Suma \n2.Resta \n3.Multiplicacion \nOpcion: ");
scanf("%i%*c", &opcion);
switch (opcion){
case 1:
resultado=n1+n2;
break;
case 2:
resultado=n1-n2;
break;
case 3:
resultado=n1*n2;
break;
printf("%i", resultado);
}
}
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.