【发布时间】:2012-05-10 00:04:02
【问题描述】:
我在下面的代码中有一个奇怪的错误:
char choice=Getchar();
switch(choice)
{
case 's':
cout<<" display tree ";
thetree->displaytree();
break;
case 'i':
cout<<" enter value to insert "<<endl;
cin>>value;
thetree->insert(value);
break;
case 'f' :
cout<< "enter value to find ";
cin>>value;
int found=thetree->find(value);
if(found!=-1)
cout<<" found = "<<value<<endl;
else
cout<< " not found " <<value <<endl;
break;
default:
cout <<" invalid entry "<<endl;;
}
Visual Studio 2010 编译器说:
1>c:\users\daviti\documents\visual studio 2010\projects\2-3-4\2-3-4\2-3-4.cpp(317): error C2361: initialization of 'found' is skipped by 'default' label
1> c:\users\daviti\documents\visual studio 2010\projects\2-3-4\2-3-4\2-3-4.cpp(308) : see declaration of 'found'
我认为我已经正确编写了break和default语句,那么错误在哪里?
【问题讨论】:
-
如果您已经知道问题的答案,这只是一个完全相同的副本。神秘的“错误 C2361:'found' 的初始化被 'default' 标签跳过”并不一定会让您想到“为什么不能在 switch 语句中声明变量?”
-
我今天遇到了同样的问题 :) 我不是 C++ 专业人士,我不知道不允许在没有花括号的“案例”中声明指针。所以只是一个想法,如果您知道答案或解决方案并想分享它,请分享,但不要在这里像个聪明人一样行事。
-
@Constantin 同意“自作聪明”的说法——但你指的是谁? :)
标签: c++ compiler-errors switch-statement