Compiler errors 在';之前应为主表达式';令牌,开关盒
这是我正在读的一本书中的一个switch-case语句的例子,我在其他例子中也遇到了问题,但我能够自己解决它们。我不知道我遗漏了什么。我在我遇到问题的那行上写了一条评论,我一直在得到预期的主表达式,然后)标记错误Compiler errors 在';之前应为主表达式';令牌,开关盒,compiler-errors,switch-statement,case,Compiler Errors,Switch Statement,Case,这是我正在读的一本书中的一个switch-case语句的例子,我在其他例子中也遇到了问题,但我能够自己解决它们。我不知道我遗漏了什么。我在我遇到问题的那行上写了一条评论,我一直在得到预期的主表达式,然后)标记错误 int main() { enum Days{ Sunday=0, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}; switch(Days) { //e
int main()
{
enum Days{
Sunday=0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday};
switch(Days) { //expected primary-expression before ')' token
case Sunday:
cout<<"Sunday was named after the Sun.";
break;
case Monday:
cout<<"Monday was named after the Moon.";
break;
}
return 0;
}
intmain()
{
枚举天数{
星期日=0,
星期一,
星期二,
星期三,
星期四,
星期五,
星期六};
开关(天){//应在“')标记之前使用主表达式
案件星期日:
coutswitch
语句期望您将变量传递给它,而不是类型。但您传递的是类型,即枚举天数
。因此您应该首先声明此类型的变量:
enum Days=周日;
…或者如果你使用C++,你可以省略<代码> EnUM <代码>:
Days=周日;
然后将这个变量提供给switch,如下所示
开关(天){
...
}
您可能还应该在交换机中添加default:
部分来处理错误情况
编辑:
如果你需要向用户输入,我假设你使用C++,你可以使用<代码> STD::CIN < /代码>:
int-day;
std::cout>day;
开关(日){
但您可以更优雅地解决此任务,如下所示:
#包括
#包括
#定义数组大小(a)(sizeof(a)/sizeof(a[0]))
int main()
{
const char*days[]={“星期日”、“星期一”、“星期二”、“星期三”,
“星期四”、“星期五”、“星期六”};
国际日;
std::cout>day;
如果(天<0 | |天>=数组大小(天)){
std::cerr您需要基于变量或表达式进行切换。因此,如果您声明了类型为“Days”的变量“d”,则可以编写:switch(d)。程序现在可以编译,但输出结果只是“Sunday以太阳命名”我想我应该问的是如何输入,输入0-6表示日期并将其输出到屏幕上。我可以用if-else-if语句来实现这一点,但我尝试将其转换为switch-case语句,现在我完全迷路了。顺便说一下,这是C++Ok,至于“输入”问题--请看我的原始答案中的编辑。谢谢!非常有用。