Por lo general, en C, tenemos que decirle a la computadora el tipo de datos en la declaración de variables. Por ejemplo, en el siguiente programa, quiero imprimir la suma de dos números de coma flotante X e Y.
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
Tuve que decirle al compilador el tipo de variable X.
- ¿No puede el compilador determinar el tipo de
Xpor sí mismo?
Sí, puede hacerlo si hago esto:
#define X 5.2
Ahora puedo escribir mi programa sin decirle al compilador el tipo de Xcomo:
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
Entonces, vemos que el lenguaje C tiene algún tipo de característica, mediante la cual puede determinar el tipo de datos por sí mismo. En mi caso se determinó que Xes de tipo float.
- ¿Por qué tenemos que mencionar el tipo de datos cuando declaramos algo en main ()? ¿Por qué el compilador no puede determinar el tipo de datos de una variable por sí solo
main()como lo hace en#define?
#define X 5.2, Xno es una variable, sino una constante, por lo que literalmente se reemplaza por preprocesador con 5.2cualquier lugar que haya mencionado X. No puedes reasignar X.
autorealidad, C ++ hace lo que quiere). Por otro lado, si crees que sabes lo que está haciendo tu código y escribiste algo más, la escritura estática como esta detectará un error antes, antes de que se convierta en un gran problema. Cada idioma logra un equilibrio: escritura estática, inferencia de tipos, escritura dinámica. Para algunas tareas, la escritura adicional realmente vale la pena. Para otros, es un desperdicio.
5.2es undouble, entonces el primer programa redondea los literales dobles afloatprecisión, luego los agrega como flotantes, mientras que el segundo redondea la representación doble de 5.1doubley lo agrega aldoublevalor 5.2 usando ladoublesuma, luego redondea el resultado de ese cálculo afloatprecisión . Debido a que el redondeo ocurre en diferentes lugares, el resultado puede disminuir. Este es solo un ejemplo para los tipos de variables que afectan el comportamiento de un programa idéntico.