温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在C语言项目中使用switch语句

发布时间:2021-03-22 17:23:44 来源:亿速云 阅读:142 作者:Leah 栏目:编程语言

今天就跟大家聊聊有关怎么在C语言项目中使用switch语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

#include"stdio.h"
 
int main(void)
{
    int num = 0;
    switch(num)
    {
       printf("functionrun!\n");
    }
    return 0;
}

上面的代码中用到了一个switch,但是代码块中没有任何case以及default。代码语法有问题吗?

编译一下如下:

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\02_C和指针\switch>gcc switch.c

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\02_C和指针\switch>

由上面的结果可以看到,编译没有任何问题。那么运行会是什么状态呢?会把这个唯一的printf执行输出相应的语句?

运行如下:

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\02_C和指针\switch>a

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\02_C和指针\switch>

如此看,就有点诡异了。这个printf语句是没有执行到的!也就是说,switch语句中的代码执行必须得有case标签指示代码的入口。这种行为很让人联想到一种情况的程序执行结果,代码如下:

#include"stdio.h"
 
int main(void)
{
    int num = 0;
    switch(num)
    {
       int i = 123;
       printf("functionrun!\n");
       default:
           printf("value of iis:%d\n",i);
           break;
    }
    return 0;
}

代码是在之前的代码中修改的,代码的第二个printf会执行,可是执行的时候i的数值是多少呢?从之前的测试可以看出,局部变量后面的代码是没有执行过的,那么我这个i在每次函数执行到这里的时候会每次动态性初始化吗?

代码编译运行结果:

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\02_C和指针\switch>gcc switch.c

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\02_C和指针\switch>a value of i is:2

E:\WorkSpace\02_技术实践\01_编程语言\01_C语言\02_C和指针\switch>

从上面的结果可以得出两个结论:

1,代码块中的声明定义是起作用的;

2,i的数值不是123证明这部分的局部变量并没有进行每次的动态初始化。

说起来这也是够奇怪的一个特点,印象中之前看《C专家编程》的时候似乎看到过一个类似的描述,但是那时候C语言的水平看《C专家编程》一点也看不懂。只是留下了一个模模糊糊的印象,至于是否是一个问题,有空还是得会去查查。

看完上述内容,你们对怎么在C语言项目中使用switch语句有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI