在允许的情况下更改开关语句键
Change the switch statement key in a case, allowed?
它会起作用吗/是否允许有一个开关大小写语句并更改语句中的键?
例如:
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 语句中的表达式时确定的。
相关文章:
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 为什么布尔开关语句有编译器警告?
- 如何使用"equal to"以外的评估编写开关语句
- 有没有办法在C++将字符串与开关语句一起使用?
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- C++实用程序,用于将长开关语句转换为封装开关案例阶梯的简洁函数调用
- 如何循环开关语句直到找到所需的数字?
- 带有关闭/打开布尔值的开关语句
- 清理开关语句
- 我的开关语句在C++中不起作用
- 枚举和开关语句C++
- 如何在开关语句中使用 cin "as a parameter"
- "constexpr if"比开关语句好吗?
- C++ 默认值在开关语句中不起作用
- 初学者C :为什么此开关语句给我一个错误
- C 开关语句无法正常工作
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 根据数据包类型更改行为,避免开关语句
- 如何在开关语句(C )内或外部使用IF语句
- 使用开关语句案例中的随机数