Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler errors 在';之前应为主表达式';令牌,开关盒_Compiler Errors_Switch Statement_Case - Fatal编程技术网

Compiler errors 在';之前应为主表达式';令牌,开关盒

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

这是我正在读的一本书中的一个switch-case语句的例子,我在其他例子中也遇到了问题,但我能够自己解决它们。我不知道我遗漏了什么。我在我遇到问题的那行上写了一条评论,我一直在得到预期的主表达式,然后)标记错误

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,
星期一,
星期二,
星期三,
星期四,
星期五,
星期六};
开关(天){//应在“')标记之前使用主表达式
案件星期日:

cout
switch
语句期望您将变量传递给它,而不是类型。但您传递的是类型,即
枚举天数
。因此您应该首先声明此类型的变量:

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,至于“输入”问题--请看我的原始答案中的编辑。谢谢!非常有用。