Ari*_*Das 0 c switch-statement output
输出应该是5 10 14 18.但即使是严格的默认情况也会执行输出5 10 15 20.
#include<stdio.h>
void main(void)
{
int i=0;
for(i=0;i<20;i++){
switch(i){
case 0: i+=5; break;
case 1: i+=2; break;
case 5: i+=5; break;
default: i+=4;
}
printf("%d \n",i);
}
}
Output -
5
10
15
20
Run Code Online (Sandbox Code Playgroud)
输出不应该是5 10 14 18?
不要忘记每个循环中的i增量.之前添加另一个调试打印,您可以看到它:1forswitch
for(i = 0; i < 20; i++){
printf("before %d \n",i);
switch (i){
case 0: i+=5; break;
case 1: i+=2; break;
case 5: i+=5; break;
default: i+=4;
}
printf("after %d \n",i);
}
Run Code Online (Sandbox Code Playgroud)
输出:
before 0
after 5
before 6
after 10
before 11
after 15
before 16
after 20
Run Code Online (Sandbox Code Playgroud)