Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: General Dmitry Vergadoski en 25 Febrero 2014, 21:55 pm



Título: porque C es de debil tipado
Publicado por: General Dmitry Vergadoski en 25 Febrero 2014, 21:55 pm
hola amigos porque C es de debil tipado y C++ es de fuerte tipado?

gracias de antemano.


Título: Re: porque C es de debil tipado
Publicado por: NikNitro! en 25 Febrero 2014, 22:33 pm
Porque permite usar algunas variables de un tipo 'x' como si fueran otro tipo 'y'

Salud


Título: Re: porque C es de debil tipado
Publicado por: General Dmitry Vergadoski en 25 Febrero 2014, 23:04 pm
hola amigos porque C es de debil tipado y C++ es de fuerte tipado?

gracias de antemano.

cuales son esas variables porque yo he probado varias y no deja, y si es como dices entonces C++ es de tipado debil ya que es una expansion de C


Título: Re: porque C es de debil tipado
Publicado por: amchacon en 25 Febrero 2014, 23:15 pm
Supongo que por el encapsulamiento y porque cada objeto creado con class es único y no se puede transformar (salvo que te defines un operador de conversión).


Título: Re: porque C es de debil tipado
Publicado por: engel lex en 26 Febrero 2014, 01:31 am
wiki dice (http://es.wikipedia.org/wiki/Tipado_d%C3%A9bil#Lenguajes_no_tipados)

y es estatico que es
Citar
Se dice de un lenguaje de programación que usa un tipado estático cuando la comprobación de tipificación se realiza durante la compilación, y no durante la ejecución.

qué significa débilmente tipado y estático realmente?
que si hacemos

Código
  1. int a = 4;
  2. char b = '5';
  3. float c;
  4. c= a + b;
  5. printf("%f", c );

eso da 57.0

eso lo hace débilmente tipado, permite sumar valores de diferentes tipos y da una respuesta "inesperada", y si, efectivamente c++ también es débilmente tipado

es estático, porque el solo chequea los tipos al tiempo de compliación, es decir, esos tipicos errores "cannot convert constant *char to *char" pero no los revisa cuando se está ejecutado (como en ese código de arriba)


Título: Re: porque C es de debil tipado
Publicado por: General Dmitry Vergadoski en 26 Febrero 2014, 02:11 am
wiki dice (http://es.wikipedia.org/wiki/Tipado_d%C3%A9bil#Lenguajes_no_tipados)

y es estatico que es
qué significa débilmente tipado y estático realmente?
que si hacemos

Código
  1. int a = 4;
  2. char b = '5';
  3. float c;
  4. c= a + b;
  5. printf("%f", c );

eso da 57.0

eso lo hace débilmente tipado, permite sumar valores de diferentes tipos y da una respuesta "inesperada", y si, efectivamente c++ también es débilmente tipado

es estático, porque el solo chequea los tipos al tiempo de compliación, es decir, esos tipicos errores "cannot convert constant *char to *char" pero no los revisa cuando se está ejecutado (como en ese código de arriba)
no entiendo porque da 57?, si pascal es muy parecido a C y es considerado de fuerte tipado porque C no lo es?


Título: Re: porque C es de debil tipado
Publicado por: dRak0 en 26 Febrero 2014, 02:25 am
Simple , porque b es un char , entonces '5' es igual a 53(Ascii) => c=53+4 => c=57
 Si c era un float => c=57.0


Título: Re: porque C es de debil tipado
Publicado por: engel lex en 26 Febrero 2014, 02:36 am
no entiendo porque da 57?,

XD repito mi texto
Citar
permite sumar valores de diferentes tipos y da una respuesta "inesperada"

es como dice __libc_start_main pero a eso me referia con respuesta inesperada...

si pascal es muy parecido a C y es considerado de fuerte tipado porque C no lo es?
1- pascal parecido a C? es como que digas que VB6 es parecido a C XD
2- depende de como sea compilado, es inherente al lenguaje, C tiene mucho "huecos" de seguridad, que en realidad son atajos de eficiencia, el lenguaje evita hacer ciertas comparaciones porque las asume ciertas en pro de la velocidad (lo programaron asumiendo que quien programara con el sabia lo que hacia), tal vez pascal el creador quiso hacer un lenguaje más "seguro" con respecto a eso


Título: Re: porque C es de debil tipado
Publicado por: amchacon en 26 Febrero 2014, 02:37 am
es estático, porque el solo chequea los tipos al tiempo de compliación, es decir, esos tipicos errores "cannot convert constant *char to *char" pero no los revisa cuando se está ejecutado (como en ese código de arriba)
Ojo, que la sobrecarga de funciones/operadores de C++ te proporciona unas excelentas herramientas para detectar estas cosas en tiempo de compilación.

De hecho, ese es el mecanismo que usa cout.


Título: Re: porque C es de debil tipado
Publicado por: engel lex en 26 Febrero 2014, 02:43 am
Ojo, que la sobrecarga de funciones/operadores de C++ te proporciona unas excelentas herramientas para detectar estas cosas en tiempo de compilación.

De hecho, ese es el mecanismo que usa cout.

dirás en tiempo de ejecución?

y si, hay herramientas para eso... pero es justamente por lo que digo... el lenguaje se hizo para que fuera rápido y efectivo, las validaciones van de tu parte...


Título: Re: porque C es de debil tipado
Publicado por: amchacon en 26 Febrero 2014, 09:15 am
dirás en tiempo de ejecución?

y si, hay herramientas para eso... pero es justamente por lo que digo... el lenguaje se hizo para que fuera rápido y efectivo, las validaciones van de tu parte...
No, la sobrecarga de funciones/operadores se resuelve en tiempo de compilación.