Errores en C/C++

El error es una operación ilegal realizada por el usuario que resulta en un funcionamiento anormal del programa. 
Los errores de programación a menudo pasan desapercibidos hasta que el programa se compila o ejecuta. Algunos de los errores impiden que el programa se compile o ejecute. Por lo tanto, los errores deben eliminarse antes de compilar y ejecutar. 
Los errores más comunes se pueden clasificar en términos generales de la siguiente manera.
 

Tipo de errores:

  1. Errores de sintaxis: los errores que ocurren cuando viola las reglas de escritura de la sintaxis de C/C++ se conocen como errores de sintaxis. Este error del compilador indica algo que debe corregirse antes de que se pueda compilar el código. Todos estos errores son detectados por el compilador y, por lo tanto, se conocen como errores de tiempo de compilación. 
    Los errores de sintaxis más frecuentes son: 
    • Paréntesis faltante ( } )
    • Imprimiendo el valor de la variable sin declararla
    • Falta el punto y coma como este:

C++

// C++ program to illustrate
// syntax error
 
#include <iostream>
using namespace std;
 
void main()
{
    int x = 10;
    int y = 15;
     
    cout << " "<< (x, y) // semicolon missed
}
 
// This code is contributed by shivanisinghss2110

C

// C program to illustrate
// syntax error
#include<stdio.h>
void main()
{
    int x = 10;
    int y = 15;
     
    printf("%d", (x, y)) // semicolon missed
}

Error: 

error: expected ';' before '}' token
  • La sintaxis de una construcción básica está mal escrita. Por ejemplo: bucle while

C++

// C++ program to illustrate
// syntax error
#include <iostream>
using namespace std;
 
int main(void)
{
    // while() cannot contain "." as an argument.
    while(.)
    {
        cout <<"hello";
    }
    return 0;
}
 
// This code is contributed by shivanisinghss2110

C

// C program to illustrate
// syntax error
#include<stdio.h>
int main(void)
{
    // while() cannot contain "." as an argument.
    while(.)
    {
        printf("hello");
    }
    return 0;
}

Error:

error: expected expression before '.' token
     while(.) 
  • En el ejemplo dado, la sintaxis de while loop es incorrecta. Esto provoca un error de sintaxis.
  1. Errores de tiempo de ejecución: los errores que ocurren durante la ejecución del programa (tiempo de ejecución) después de una compilación exitosa se denominan errores de tiempo de ejecución. Uno de los errores de tiempo de ejecución más comunes es la división por cero, también conocida como error de división. Estos tipos de errores son difíciles de encontrar ya que el compilador no apunta a la línea en la que se produce el error. 
    Para una mayor comprensión, ejecute el ejemplo que se proporciona a continuación. 
     

C++

// C++ program to illustrate
// run-time error
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
 
void main()
{
    int n = 9, div = 0;
   
    // wrong logic
    // number is divided by 0,
    // so this program abnormally terminates
    div = n/0;
     
   cout << "result = "<< div;
}
 
// This code is contributed by shivanisinghss2110

C

// C program to illustrate
// run-time error
#include<stdio.h>
void main()
{
    int n = 9, div = 0;
   
    // wrong logic
    // number is divided by 0,
    // so this program abnormally terminates
    div = n/0;
     
    printf("result = %d", div);
}

Error:

warning: division by zero [-Wdiv-by-zero]
     div = n/0;
  1. En el ejemplo dado, hay división por error cero. Este es un ejemplo de error en tiempo de ejecución, es decir, errores que ocurren mientras se ejecuta el programa.
  2. Errores del enlazador: este error ocurre cuando, después de la compilación, vinculamos los diferentes archivos de objetos con el objeto principal usando la tecla Ctrl+F9 (EJECUTAR). Son errores que se generan cuando no se puede generar el ejecutable del programa. Esto puede deberse a la creación de prototipos de funciones incorrectas, archivos de encabezado incorrectos. Uno de los errores más comunes del enlazador es escribir Main() en lugar de main()
     

C++

// C++ program to illustrate
// linker error
#include <bits/stdc++.h>
using namespace std;
 
void Main() // Here Main() should be main()
{
    int a = 10;
    cout << " "<< a;
}
 
// This code is contributed by shivanisinghss2110

C

// C program to illustrate
// linker error
#include<stdio.h>
 
void Main() // Here Main() should be main()
{
    int a = 10;
    printf("%d", a);
}

Error: 

(.text+0x20): undefined reference to `main'
  1. Errores lógicos: en la compilación y ejecución de un programa, no se obtiene la salida deseada cuando se dan ciertos valores de entrada. Estos tipos de errores que proporcionan una salida incorrecta pero parecen estar libres de errores se denominan errores lógicos. Estos son uno de los errores más comunes que cometen los principiantes en programación. 
    Estos errores dependen únicamente del pensamiento lógico del programador y son fáciles de detectar si seguimos la línea de ejecución y determinamos por qué el programa toma ese camino de ejecución. 
     

C++

// C++ program to illustrate
// logical error
int main()
{
    int i = 0;
 
    // logical error : a semicolon after loop
    for(i = 0; i < 3; i++);
    {
       cout << "loop ";
        continue;
    }
    return 0;
}
 
 
// This code is contributed by shivanisinghss2110.

C

// C program to illustrate
// logical error
int main()
{
    int i = 0;
 
    // logical error : a semicolon after loop
    for(i = 0; i < 3; i++);
    {
        printf("loop ");
        continue;
    }
    getchar();
    return 0;
}
  1. Ninguna salida
  2. Errores semánticos: este error ocurre cuando las declaraciones escritas en el programa no son significativas para el compilador.

C++

// C++ program to illustrate
// semantic error
int main()
{
    int a, b, c;
    a + b = c; //semantic error
}
 
// This code is contributed by sarajadhav12052009

C

// C program to illustrate
// semantic error
void main()
{
  int a, b, c;
  a + b = c; //semantic error
}

Error:

 error: lvalue required as left operand of assignment
 a + b = c; //semantic error
Este artículo es una contribución de Krishna Bhatia . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente. 
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *