Diferencias entre C y C++

Me han estado llegando comentarios y correos con dudas, correcciones y todo tipo de insultos (no, eso último no) y decidí responder todos ellos con este post en el que aclararé lo que es C y lo que es C++ y sus diferencias.

C fue creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

C++, por su parte, fue creado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos.

Así que C es el lenguaje original, mientras que C++ es una ampliación de C, por eso el ++.

A mi cuando me enseñaron a programar me dijeron que iba a aprender a programar en C++, pero en verdad me enseñaron únicamente C, así que muchos profesores en realidad no saben lo que es programar en C++. Veamos un hola mundo en los dos programas:

En C

#include

int main()
{
        printf ("Hola Mundo");
        return 0;
}

En C++

#include

using namespace std;

int main()
{
    cout << "Hola mundo";
    return 0;
}

Para el tipo de programas que se estarán mostrando en este blog la diferencia más importante es la entrada y salida de datos. Así que veamos un ejemplo de entrada y salida de datos de cada programa:

En C

#include

int main()
{
    int radio;
    float area, perimetro;

    // SALIDA: mensaje un pantalla
    printf("Introduce el radio del circulo: ");

    //ENTRADA: recibir dato desde teclado
    scanf("%d", &radio);

    // calculos
    area = 3.1416 * radio * radio;
    perimetro = 3.1416 * radio * 2;

    //SALIDA: resultado en pantalla
    printf("El area es %.2f y el perimetro %.2f", area, perimetro);
    getch();

    return 0;
}

En C++

#include
using namespace std;

int main()
{
    int radio;
    float area, perimetro;

    // SALIDA: mensaje un pantalla
    cout <> radio;

    // calculos
    area = 3.1416 * radio * radio;
    perimetro = 3.1416 * radio * 2;

    //SALIDA: resultado en pantalla
    cout << "El area es " << area << " y el perimetro " << perimetro;
    cin.get();cin.get();

    return 0;
}

Lo que noté al hacer estos dos programitas es que pedir un dato en C++ es mucho mucho más simple que en C. Sin embargo, el asunto de los << y >> puede llegar a ‘asustar’ a los recién iniciados en la programación.

Pedir un dato en C

scanf("modificador", &nombre de la variable);

Pedir un dato en C++

cin >> nombre de la variable;

Mostrar un dato en C

printf("Dato: modificador", nombre de la variable);

Mostrar un dato en C++

cout << "Dato: " << nombre de la variable;

Los modificadores son los siguientes: %d para int, %f para float, %s para string, %c para char.

Librerías en C++

Por simple convención las librerías en C terminan en ‘.h’ (punto hache). Todas las librerías de C sirven para C++, sin embargo, también por convención, se elimina la terminación ‘.h’ y mejor se agrega ‘c’ al principio.

Libreria en C      Librería en C++

math.h                  cmath

string.h                 cstring

time.h                   ctime

etcetera.

El ‘namespace’

C como lenguaje tiene un conjunto de palabras reservadas, como por ejemplo: if, for, while, int, float, … C++ es una ampliación, por lo tanto tiene que agregar nuevas palabras reservadas. Éstas palabras reservadas están en un ‘namespace’ (espacio de nombres). En específico cout y cin están el namespace std (standard).

Si no declararamos que vamos a usar el namespace std (using namespace std;), cada vez que quisieramos usar cout, tendríamos que escribir std::cout.

Espero que a partir de ahora pueden identificar si un programa está en C o en C++. También espero estar publicando mis programas en ambos lenguajes a partir de ahora.

23 thoughts on “Diferencias entre C y C++

  1. muchas gracias ahora se diferenciar entre c y c++
    una duda que me quedo es: cuando hacen la operacion del radio al final en c++ cuando muestra el resultado se utilisa “cin.get();” para mostrar el resultado en la consola, pero porque usas dos veces el “cin.get();cin.get();”? no seria lo mismo con una sola vez?
    gracias.

    1. Yo uso cin.get();cin.get(); dos veces para pausar le ejecución del programa. Si quisiera utilizar getch() tendría que agregar la librería . Se usa dos veces porque el primer cin.get() lee la ‘basura’ que queda en la memoria, el segundo tiene que esperar hasta que se presione cualquier tecla.

  2. Hola soy nuevo y novato en este lenguaje C y C++ pero segun las explicaciones leidas comenzare de nuevo a pasarme de c a c++ yo lleve basic en la universidad y realmente no fui muy bueno en programar pero hoy necesito aprender lenguaje en C ya que me servirá para enseñarle a mi sobrino que lleva bachillerato y no le gusta mucho, ademas hacerle entender que todo bien aprendido sirve en cualquier momento en la vida.

  3. Buenas a todos que tengan buen día, les cuento que este blog me ha aclarado las dudas que tenia, pero no todas, hay cosas que no comprendo, resulta que estoy en el segundo semestre de Computación, pero, estamos viendo la clase de lenguaje C y C++, por ende quisiera saber ya que la profesora ha explicado bastante sabiendo gran parte teoría, pero en los talleres en los laboratorios he notado que muchas de las personas ligan C con C++ al hacer sus algoritmos. Con la ayuda de esta guía, hice el algoritmo que pidió la profesora pero en C++, ya que me enreda porque muchos llaman las dos bibliotecas de C/C++ para pedir un dato scanf/cin y mostrarlos prinf/cout en un mismo algoritmo, no se me parece que es mejor hacerlo de una manera, aunque todos tienen sus razones, pero creo que es porque como antes no sabia la diferencia entre ambos algoritmos, ahora cada quien puede hacerlo como quiere en C o C++.

  4. Buena descripcion y yo tambien me estoy familiarizando con C y C++; por ahora estoy aprendiendo C, pero lo estoy haciendo desde GNU/Linux Ubuntu 11.10 y tambien los corro en Windows, son pocas las difrencias por el moento que he encontrado, claro con programas sencillos; espero que encuentre muchas mas difrencias, con respecto en avanzar con programas mas complejos.

  5. la verdad hasta a mi me engañaron pensaba que C era C++ gracias por la informacion sirve de gran ayuda

  6. Realmente en este artículo no se han anotado las diferencias entre C y C++.
    Se sabe que cada lenguaje tiene sus peculariedades. Que es lo que se ha planteado en el artículo.
    Explicar lo que verdaderamente diferencia cada lenguaje.

    1. Me cito a mi mismo: “Para el tipo de programas que se estarán mostrando en este blog la diferencia más importante es la entrada y salida de datos. Así que veamos un ejemplo de entrada y salida de datos de cada programa…”

      Gracias.

  7. no es correcto! stdio.h y iostream son 2 librerias distintas, yo uso C++ y cuando hago ejemplos simples uso stdio.h porque me gusta mas como se usan la entrada y salida de datos. El .h significa archivo de cabecera, iostream no lo uso pero tambien se le puede poner el .h porque es un archivo de cabecera.
    obviamente que stdio.h o iostream solo se usan para hacer cosas sencillas, para usar graficos no sirven absolutamente para nada!
    y se llama C++ simplemente por la nueva operacion ++ que agregaron, en vez de poner h=h+1 se pone h++.

  8. Tengo una cuestion, tengo ya hecho un programa en borland pero ahora lo estoy pasando a Dev C++ pero al arrojar los resultados en forma decimal me arroja 6 digitos y mi tabuacion pues sale toda dispareja, y por lo que veo en borland si puedes usar el %.2f y en Dev C++ no me deja igual, quisiera saber como puedo poner solo dos o tres decimales en C++, espero su respuesta y por cierto muy buen post😀

  9. Saludos desde Bogotá D.C.
    ¡Maravilloso,estupendo este blog.Consultando sobre “Borland C++” en la Web o “gogleando”, los encontre.
    Soy desarrollador de software en Visual Basic .NET y Windows Phone 8.
    Me inicio en la programación en C/C++ y creo que estoy en el lugar adecuado.
    Me ha gustado en lo “Diferencias entre C y C++”,es excelente.Por no saber o no conocer sobre esas diferencias,perdi la oportunidad de un puesto de trabajo.En la entrevista me preguntarón sobre las diferencias en C y C++.
    Aunque la vacante laboral no era para desarrollar en C/C++,me hicieron dicha pregunta y no supe responder.¡Pero bueno…Estoy trabajando en una empresa donde desarrollo Apps para Windows Phone 8!
    Soy ingeniero de sistemas y me interesa mucho ser un ávido desarrollador en C/C++.
    Excelente post,gracias.
    Un saludo.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s