我需要显示一个菜单,该菜单导出另一个菜单,并导出另一个菜单。 但我正在用这种形式验证这些菜单:(只有C标准库)
do{
validOption = 1;
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: /* Do something */ break;
case 2: /* Do something */ break;
case 3: /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
但是在导出菜单时我不知道是否使用相同的option
变量和validOption
标志。
我认为这不是问题,因为派生的 option
变量将被覆盖并且
我不需要以前的option
变量,因为option
变量仅用于它
加入特定案例的目的。
现在,validOption
标志也不是问题,因为当成功案例发生意味着validOption = 1
(不会迭代更多)
它将与之前的validOption
匹配,其值为1(因为已加入案例)。所以不会干涉。
在派生菜单中使用相同的变量(option, validOption
)是一种好习惯吗?
此外,我需要使用getint()
函数进行验证,这让我觉得如果
甚至是必要的验证菜单以实用的方式看待它。
#include<stdio.h>
int main(){
int option;
int validOption;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1:
validOption = 1;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: validOption = 1; /* Another menu with the same option and validOption variables */ break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
return 0;
}
//I've put validOption = 1; within all cases just for explaining purposes
答案 0 :(得分:1)
我宁愿称之为嵌套循环而不是派生。
来到你的问题:当不再需要变量的第一个值时,在循环中重复使用相同的变量是否有效? (我是否正确地重述了你的问题?)
是的,这是有效的。虽然技术上没有任何问题,但我会说否。因为它会导致不必要的混淆并使代码可读性变得困难,尤其是当它在同一个循环中时(就像在外部循环中一样)。随着代码库的增长,它变得更加困难。因此,我会阻止这种编码实践。
你想验证你的整数:因为,你只会按值传递(到getint()
),使用另一个变量没有问题。您可以使用option1
和option2
将值传递给getint()
以验证它。