el tipo de NULL
y el tipo de i
son diferentes, pero C
perdona ti :)
C
es (sobre todo) un lenguaje "no seguro". Quiero decir: te permite mezclar tipos de los que se quejarían otros idiomas.
Con C
puede agregar a chars
doubles
, se puede multiplicar chars
y ints
, ...
Lo que está haciendo es la asignación de un null pointer constant
(de tipo void *
) a una int
. C
permite eso, pero debe tener mucho cuidado al mezclar los tipos de esta manera.
El resultado de asignar la constante del puntero nulo a un int es lo mismo que asignarle 0
. Entonces comienza su ciclo con i
siendo 0
.
Una variable automática estática, en ausencia de un inicializador, se inicializa en 0
. Esto le sucede a la variable count
en su programa.
Así, el bucle sale primero (count
se convierte en 1) con i
ser 0, a continuación, se convierte en i
2.
Ahora el bucle va (count
se convierte en 2) con i
ser 2, a continuación, se convierte en i
4.
Ahora el el lazo va (count
se convierte en 3) con i
siendo 4, luego i
se convierte en 6.
Y el ciclo finaliza ... e imprime el valor de count
.
Notas
- ser estándar compatible
main
debe declararse int main(void)
- que debe ser la salida de una nueva línea después de cada línea completa (
printf("%d\n", count);
)
- y usted debe
return 0;
para indicar éxito finalización de su programa para el sistema operativo
bt de salida es 3 .. ¿cómo? –
@me_eclair: es '3' porque estás contando a' 5' por '2' en la última parte del ciclo' for'. Está agregando '2' a cada iteración, por lo que' i' es así: '0' ->' 2' -> '4' ->' 6'. El bucle no se ingresa cuando 'i == 6', por lo que el cuerpo del bucle solo se ejecuta 3 veces. –
NULL se define en. No necesita incluir . En particular, puede usar NULL en un entorno independiente sin incluir (que no debe estar disponible). –
alecov