')' 标记前的预期主表达式,switch-case
Expected primary expression before ')' token, switch-case
这是我正在阅读的一本书中的一个 switch case 语句示例,我也遇到过其他示例的问题,但我已经能够自己解决它们。我不知道我在做什么 missing.I 在遇到问题的行上发表评论,我在 ) 标记错误之前一直收到预期的主要表达式。
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;
}
switch
语句期望您将 variable 传递给它,而不是 type。但是您传递的是 type,即 enum Days
。所以你应该先声明这个类型的变量:
enum Days days = Sunday;
...或者如果您使用 C++,则可以省略 enum
:
Days days = Sunday;
然后提供这个变量给switch,就这样
switch (days) {
...
}
您可能还应该将 default:
部分添加到您的开关中以处理错误情况。
编辑:
如果你需要询问用户输入,我假设你使用的是 C++,你可以使用 std::cin
:
int day;
std::cout << "Enter day number (0..6): ";
std::cin >> day;
switch (day) {
但是你可以更优雅地解决这个任务,像这样:
#include <iostream>
#include <cstdlib>
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
int main()
{
const char *days[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" };
int day;
std::cout << "Enter day number (0..6): ";
std::cin >> day;
if (day < 0 || day >= ARRAY_SIZE(days)) {
std::cerr << "Bad day" << std::endl;
return EXIT_FAILURE;
}
std::cout << days[day] << std::endl;
return EXIT_SUCCESS;
}
您需要根据变量或表达式进行切换。因此,如果您声明类型为 'Days' 的变量 'd',您将能够编写:switch(d).
这是我正在阅读的一本书中的一个 switch case 语句示例,我也遇到过其他示例的问题,但我已经能够自己解决它们。我不知道我在做什么 missing.I 在遇到问题的行上发表评论,我在 ) 标记错误之前一直收到预期的主要表达式。
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;
}
switch
语句期望您将 variable 传递给它,而不是 type。但是您传递的是 type,即 enum Days
。所以你应该先声明这个类型的变量:
enum Days days = Sunday;
...或者如果您使用 C++,则可以省略 enum
:
Days days = Sunday;
然后提供这个变量给switch,就这样
switch (days) {
...
}
您可能还应该将 default:
部分添加到您的开关中以处理错误情况。
编辑:
如果你需要询问用户输入,我假设你使用的是 C++,你可以使用 std::cin
:
int day;
std::cout << "Enter day number (0..6): ";
std::cin >> day;
switch (day) {
但是你可以更优雅地解决这个任务,像这样:
#include <iostream>
#include <cstdlib>
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
int main()
{
const char *days[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" };
int day;
std::cout << "Enter day number (0..6): ";
std::cin >> day;
if (day < 0 || day >= ARRAY_SIZE(days)) {
std::cerr << "Bad day" << std::endl;
return EXIT_FAILURE;
}
std::cout << days[day] << std::endl;
return EXIT_SUCCESS;
}
您需要根据变量或表达式进行切换。因此,如果您声明类型为 'Days' 的变量 'd',您将能够编写:switch(d).