首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学者对switch语句的一些疑惑

2013-11-29 
菜鸟对switch语句的一些疑惑我想在switch语句中写一个递归,在case后面在递归这个switch语句,但是我把里面

菜鸟对switch语句的一些疑惑
我想在switch语句中写一个递归,在case后面在递归这个switch语句,但是我把里面的变量改了,这样可以不?
switch (p->data)
{
    case 'a':{t=p->next;switch(t->data)};break;
    case 'n':{t=p->next;switch(t->data)};break;
    case 't':{t=p->next;switch(t->data)};break;
    case 'i':printf("反对");break;
}
里层的switch语句会不会再走外层的switch,我感觉是不会,但是不确定,也不知道怎么验证。求大神帮忙 C语言编程?菜鸟 菜鸟对switch语句的一些疑惑
[解决办法]
switch不是函数,不能递归的
[解决办法]
语法需要学习背诵和练习,不能推测和发明

[解决办法]
switch语句无法递归,你的用法只能说是嵌套而已,嵌套多少层也都是一个顺序分支的流程而已。

引用:
我想在switch语句中写一个递归,在case后面在递归这个switch语句,但是我把里面的变量改了,这样可以不?
switch (p->data)
{
    case 'a':{t=p->next;switch(t->data)};break;
    case 'n':{t=p->next;switch(t->data)};break;
    case 't':{t=p->next;switch(t->data)};break;
    case 'i':printf("反对");break;
}
里层的switch语句会不会再走外层的switch,我感觉是不会,但是不确定,也不知道怎么验证。求大神帮忙

[解决办法]
如果是函数的话,才可以,像这样:

struct node
{
    int data;
    struct node *next;
};

struct node *p = NULL;

void switchFunction(int data)
{
    struct node *t;
    switch (p->data)
    {
        case 'a':{t=p->next;switchFunction(t->data);};break;
        case 'n':{t=p->next;switchFunction(t->data);};break;
        case 't':{t=p->next;switchFunction(t->data);};break;
        case 'i':printf("反对");break;
    }
}

[解决办法]
会走,switch/while/for/do中break只会退出当前块,break后执行之后的代码块。具体的解释http://msdn.microsoft.com/en-us/library/vstudio/37zc9d2w.aspx。
而且,switch只是个语句,不像函数自己调自己递归,第二个switch没什么用。要达到你那个目的,使用循环就可以了。大概代码是
while (p)
{
    switch(p->data)
    {
    }
    p = p->next;
}

[解决办法]
你的改法不行的,switch不是函数,不能递归
[解决办法]
嵌套而已!这种情况下,为了增加程序的可读性,已经后期维护性,
你应该重新添加新的接口来实现新的嵌套功能!

热点排行