Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Geremy en 7 Junio 2019, 13:48 PM

Título: C sabiendo C++
Publicado por: Geremy en 7 Junio 2019, 13:48 PM
   Hola, actualmente estoy programando en C++ , considero que tengo un nivel medio en el mismo y estoy interesado en aprender C que parece útil aprenderlo y mas sabiendo C++ ya que muchas de las cosas son iguales o parecidas, mi pregunta es ¿Que parte de C se diferencia notablemente de C++(porque ya he visto punteros, arreglos, etc y es completamente igual) y que cosas extras tiene C con respecto a C++ que necesite aprender?.
Título: Re: C sabiendo C++
Publicado por: K-YreX en 7 Junio 2019, 13:57 PM
C++ es como una expansión de C por lo que todo lo que puedes hacer en C, lo puedes hacer en C++. Como es lógico, C++ es un "avance" por lo que tiene añadidos que facilitan algunas cosas. Por ejemplo en C olvídate de strings (debes usar <char*>), clases(debes usar <struct>), paso por referencia(tendrás que usar punteros), para usar <bool> tienes que incluir <stdbool.h> o usar <int> con valores de 0 y 1.
Al no estar orientado a objetos como C++ no tendrás cosas como:
Código (cpp) [Seleccionar]

ifstream fichero_entrada;
fichero_entrada.open("nombre_fichero.txt");

Sino que tendrás:

FILE *fichero_entrada;
fichero_entrada = fopen("nombre_fichero.txt", "r");


Y si quieres ver más diferencias puedes seguir mirando cómo se hace todo lo que haces en C++ en C. Pero asegúrate de compilar para C porque muchos comenten el error de decir que programan en C pero están compilando en C++ por lo que meten sentencias de C++ que no existen en C y no les da problemas.
Título: Re: C sabiendo C++
Publicado por: Geremy en 7 Junio 2019, 14:06 PM
 Bien gracias, la verdad que lo de los string y bool creía que era igual jeje, gracias por tu respuesta y te hago otra pregunta :D ¿hay algo que sea exclusivo de C, tengo entendido que tiene mas utilidad en la programación de bajo nivel que C++, es cierto?.
Por ultimo he de decir que estoy programando C en visual studio desde el compilador de c++, ¿según entiendo eso estaría mal no?.
Título: Re: C sabiendo C++
Publicado por: K-YreX en 7 Junio 2019, 14:15 PM
Hasta donde yo conozco exclusivo de C no ya que C++ es como una "expansión" de C, añade cosas pero no las quita. Lo que pasa es que hay cosas que en C se usan mucho y son muy típicas y en C++ existen otras formas de hacerlo.
Utilidad a bajo nivel es la misma lo que pasa es que con C te ves obligado a trabajar a más bajo nivel mientras que con C++ no tienes que hacerlo si no quieres. Al tener esta facilidad en C++ es un paso que normalmente la gente se ahorra cuando aprende. Pero si trabajas con C vas a profundizar mucho más en tus conocimientos a bajo nivel. Tampoco quiero asustar, hay muchas cosas que son como en C++ pero acabarás aprendiendo aspectos de más bajo nivel.

Si compilas como C++, al tener C++ incluido todo lo de C más lo suyo propio, si usas cosas de C++ te las dará por válidas y no sabrás que no puedes usar eso en C. A no ser claro que aprendas primero de forma teórica lo que se puede y lo que no.
A mí personalmente me ayudó mucho para diferenciar ambos lenguajes el compilar desde la Terminal de Linux, usando el comando g++ para compilar en C++ y gcc para compilar en C y te olvidas de IDEs, sólo necesitas un editor de textos y la propia Terminal.
Título: Re: C sabiendo C++
Publicado por: Loretz en 8 Junio 2019, 07:09 AM
El C++ (el primer estándar 98) desciende, es un derivado, del C95 (C90 más las correcciones de 1995). Luego, el C99 y el C++11 son los dos derivados de ese mismo ancestro común, el C95. Entonces, esto quiere decir que el C++11, C++14, C++17 y C++20 son primos, primos 2dos, etc. del C99, tienen al C95 como abuelito en común.

En esta página hay una lista con incompatibilidades entre C++98 y C99:
http://david.tribble.com/text/cdiffs.htm

Por ejemplo, palabras clave del C++98 que no va a reconocer un compilador C99:


Una lista completa de lo que hace que un programa C++ no compile en C es bastante extensa, los temas serían: