首页 > 技术文章 > 循环结构中的坑

gddzkw 2021-08-30 18:54 原文

 

1.while循环:条件表达式的执行次数总是比循环体的执行次数多一次

2.do…while循环:条件表达式的执行次数与循环体的执行次数一样

3.switch语句中可以有default,也可以没有default,但最多有一个,如果case语句中,没有break终止,则会继续往下进行,知道末尾

4.break语句:是跳出当前循环,只能在循环语句和判断语句中使用

5.continue语句:跳过当次循环,进入下次循环

%6.i++; 先运算在自加

   ++i;先自加在运算

7.while循环后面不带分号,do…while循环后面必须带分号。

坑点分析:a作为循环的判断,也做为循环内容,那么在运行完内容后,还需要进行自加(这个自加很容易忽略),才能进行循环判断,判断不成立时,才能退出循环,(这个步骤和值也很容易别遗忘)

坑点分析:主要是“--x”和“x--”的混合应用,x=8进入循环,for判断为真,后判断if为真,这打印x的值,此时x=8,然后在执行输出语句的“x--”,所以x=7,经continue语句,在执行for循环中的“x--”,得到x=6

 

经循环判断进入if判断,条件为假,则跳过if判断,执行输出“--x”,先减在输出,得x=5,然后在执行for循环中的“x--”,得到x=4,for循环为真,进入循环判断if,if为真,打印输出x=4,在执行输出的“x--”,得到

 

x=3,执行for循环的“x--”,得到x=2,for循环为真,if判断为真,打印输出x=2,在执行“x--”,得到x=1,后继续执行for循环的“x--”,得到x=0,for循环为假,结束。

 

坑点分析:do进入循环,执行“++b”,得到b=1,进入判断,此时a=-2,为真,然后执行“a++”,得到a=-1,返回do从新开始循环,执行“++b”,得到b=2,然后判断,a=-1,为真,然后执行“a++”,得到a=0,

重新开始循环,执行“++b”,得到b=3,循环判断,a=0,为假,执行“a++”,得到a=1,然后退出循环,打印。

8.

int main()
{
int i = 0;
int array = { 1, 5, 0, 4 };
for (i = 0; i < 5; i++)
{
printf("%d,", array[i] & 4);
}
printf("\n");
return 0;
}

 坑点分析:按位与(&)和逻辑与(&&)的区别,(&):需要将十进制数转换成二进制数,然后进行与运算

推荐阅读