Если i
равно 1, после этого оператора
while (i++ <= 10){}
i
принимается за 2, т.е. увеличивается до оценки в блоке.
Но если используетсяв переключателе
switch(i++){}
i
вычисляется до увеличения в блоке.
Почему эти случаи i++
ведут себя по-разному?
Примеры:
Для случая "В то время как":
#include <stdio.h>
int main()
{
int age = 20;
while (age++ <= 65)
{
if ((age % 20) == 0)
{
printf("You are %d years old\n", age);
}
}
return 0;
}
Я ожидаю, что это напечатает:
You are 20 years old
You are 40 years old
You are 60 years old
Для случая переключателя:
#include <stdio.h>
int main()
{
int i = 0;
while (i < 3)
{
switch (i++)
{
case 0:printf("print 0");
case 1:printf("print 1");
case 2:printf("print 2");
default:printf("Oh no!");
}
putchar('\n');
}
return 0;
}