首页 > 试题广场 >

假设i=2,执行下列语句后i的值为()。 s

[单选题]
假设i=2,执行下列语句后i的值为()
switch( i )
{
case 1 : i ++;
case 2 : i --;
case 3 : ++ i; break;
case 4 : -- i;
default : i ++;
}

  • 1
  • 2
  • 3
  • 4
<p>swith2,跳转到case2开始执行,执行完2为1,执行完3后为2</p>
发表于 2020-08-06 11:16:28 回复(0)
注意case后面是否有break,如果没有则继续执行,直到碰到break或者末尾
编辑于 2018-07-15 10:53:19 回复(0)
执行完case 2之后i=1,接着执行case 3,i=2,break!
发表于 2018-05-08 18:37:10 回复(6)
执行case2的i--后,i变为1,由于没有break所以无论满不满足条件,都会继续执行,case3中++i后i变为2,这时遇到了break,所以就会跳出,因此结果为2。
发表于 2019-10-21 10:17:32 回复(0)
这题要细心一点!主要错点在于应该从case2执行!不要忽略了i=2这个重要的信息源
发表于 2021-03-30 01:02:55 回复(0)
<p>没有break就继续循环!</p>
发表于 2020-06-06 07:26:13 回复(0)
case2执行完成后i=1,接着执行case3得到i=2遇到break
发表于 2019-11-07 20:20:30 回复(0)
case2 进去,i = 1,继续执行,执行到最后一步default i = 2;
发表于 2019-07-30 18:59:11 回复(1)

#include <stdio.h>
int main()
{
    int i = 2;
    switch( i )
    {
        case 1 : i++;
        case 2 : i--; //break;
        case 3 : ++i; break;
        case 4 : --i;
        default : i++;
    }
    printf("i = %d\n",i);
    return 0;
}
答案:
stu@hq:$ gcc 02_++i和i++.c 
stu@hq:$ ./a.out 
i = 2

解析:

++与i++不一样:

i++:先赋值,然后再做++     等效于->  i = i;  i =(i + 1)

++i:先运算,然后再做赋值  等效于->  i =(i + 1);  i = i ;

i--:先赋值,然后再做--         等效于->  i = i;  i =(i - 1)

--i:先运算,然后再做赋值    等效于->  i =(i - 1);  i = i ;


发表于 2021-05-31 08:17:20 回复(0)

switch(2){case 2:i=1;case 3: i=2;break;}

发表于 2020-11-27 21:11:38 回复(0)
正常来说每一行都要有一句break,这里缺少了break,所以case2后再执行case3之后才会break;
发表于 2020-02-19 10:55:27 回复(0)
通常写法: 在每一个case的执行语句后加break,以便当前情况执行完后退出
发表于 2019-02-18 23:02:45 回复(0)