在允许的情况下更改开关语句键

Change the switch statement key in a case, allowed?

本文关键字:开关 语句 情况下      更新时间:2023-10-16

它会起作用吗/是否允许有一个开关大小写语句并更改语句中的键?

例如:

temp = 1
switch(temp)
{
    case 1:
         temp = 2;
         //Do something with temp..
    break;
}

这样做的要点只是我不必创建另一个变量,而且在我的程序中这样做也很有意义。我不是在问在 switch-case 语句中更改为另一种情况,只是是否允许重用用作键的变量而没有任何副作用。

完全没问题。实际上,地球上的每一台状态机都会做一些与你在这里所做的等同的事情。

是的,你可以这样做。实际上,以下是编写词法分析器的常见做法:

int c = getc(file);
switch(c)
{
case '+':
    c = getc(file); // < `c` modified here!
    switch(c)
    {
    case '+': return OP_INC;
    default: ungetc(c, file); return OP_ADD;
    }
...
}
虽然使用相同的

变量不是一个好主意,但代码将起作用,因为分支是在计算 switch 语句中的表达式时确定的。