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
X
por sí mismo?
Sí, puede hacerlo si hago esto:
#define X 5.2
Ahora puedo escribir mi programa sin decirle al compilador el tipo de X
como:
#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 X
es 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
, X
no es una variable, sino una constante, por lo que literalmente se reemplaza por preprocesador con 5.2
cualquier lugar que haya mencionado X
. No puedes reasignar X
.
auto
realidad, 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.2
es undouble
, entonces el primer programa redondea los literales dobles afloat
precisión, luego los agrega como flotantes, mientras que el segundo redondea la representación doble de 5.1double
y lo agrega aldouble
valor 5.2 usando ladouble
suma, luego redondea el resultado de ese cálculo afloat
precisió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.