Тип NULL
и тип i
различны, но C
прощает вас:)
C
(в основном) не является "безопасным для типов" языком.Я имею в виду: он позволяет вам смешивать типы, на которые жаловались бы другие языки.
С C
вы можете добавить chars
к doubles
, вы можете умножить chars
и ints
, ...
Что вы делаете, так это присваиваете null pointer constant
(типа void *
) int
.C
позволяет это, но вам нужно быть очень осторожным при смешивании типов , как это.
Результат присвоения константы нулевого указателя для типа int аналогичен присваиванию 0
к этому.Таким образом, вы начинаете цикл с i
, равным 0
.
Статическая автоматическая переменная в отсутствие инициализатора инициализируется равной 0
.Это происходит с переменной count
в вашей программе.
Итак, цикл идет первым (count
становится 1) с i
равным 0, затем i
становится 2.
Теперьцикл идет (count
становится 2) с i
равным 2, затем i
становится 4.
Теперь цикл идет (count
становится 3) с i
равным 4, затем i
становится 6.
И цикл завершается ... и вы печатаете значение count
.
Примечания
- для соответствия стандарту
main
должно быть объявлено int main(void)
- вы должны выводить новую строку после каждой завершенной строки (
printf("%d\n", count);
) - , и вы должны
return 0;
, чтобы указать успешное завершение вашей программы дляОперационная система