草庐IT

switching

全部标签

c++ - 使用带有默认大小写和 lambda 函数的 switch 语句时出现 gcc 错误

我不明白为什么这段代码#includeclassA{public:voidfoo(){charg='m';switch(g){case'g':autof=[](){std::printf("helloworld\n");};f();break;//default://std::printf("gotohell\n");//break;}};};intmain(intiargc,char*iargv[]){Aa;a.foo();}编译(和工作)正常,而取消注释默认语句时#includeclassA{public:voidfoo(){charg='m';switch(g){case'g':

C++ Switch 语句大小写错误

我正在使用游戏循环的switch语句编写一个简单的基于文本的RPG。该程序工作正常,直到我尝试添加另一个case语句,此时它给了我以下三个错误:“跳转到case标签”(错误发生在新添加的case行),以及两个“crossesinitializationof'ClassName*objectName'”(案例2创建新对象时出错)。我会粘贴重要的代码,如果有人需要更多,请告诉我。intmain(void){//addweaponstoarrayWeapon*weaponList[12];//RustySwordweaponList[0]=newWeapon(0,0,0);weaponLis

java - Switch 语句 : Is the logic different in C v/s. Java 等其他语言?

我正在浏览thisC编程教程。它说:Theswitch-statementisactuallyentirelydifferent(fromotherlanguages)andisreallya"jumptable".Insteadofrandombooleanexpressions,youcanonlyputexpressionsthatresultinintegers,andtheseintegersareusedtocalculatejumpsfromthetopoftheswitchtothepartthatmatchesthatvalue.Here'ssomecodethatw

c++ - 构造函数的巨型 switch 语句

我有一个容器,其中包含一堆指向基类的指针,以及一个函数,该函数接受一些输入并返回一个类,该类是基类的子类。它返回哪个子类取决于输入。现在,我有一个像这样的巨大switch语句:classBase{...}classA:publicBase{...}classB:publicBase{...}...classZ:publicBase{...}Base*depends(intinput){switch(input){case1:returnnewA(...);case2:returnnewB(...);...case26:returnnewZ(...);default:...}}我想知道是

c++ - 使用 std::string 在 switch-case block 中返回字符串常量

注意:这不是关于使用字符串来选择switch-caseblock中的执行路径。C++中的一个常见模式是使用switch-caseblock将整数常量转换为字符串。这看起来像:charconst*to_string(codescode){switch(code){casecodes::foo:return"foo";casecodes::bar:return"bar";}}但是,我们是在C++中,所以使用std::string更合适:std::stringto_string(codescode){switch(code){casecodes::foo:return"foo";caseco

c++ - 为什么某些 IDE 不缩进 switch 中的 case 语句?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whydon'tpeopleindentC++accessspecifiers/casestatements?我有一个语法问题...不是关于如何,而是关于为什么。许多IDE,例如Eclipse和QtCreator会自动缩进一个switch,如下所示:DayrandomDay=getRandomDay();/*returns'enumDay'*/switch(randomDay){default:caseMonday:/*...*/break;caseTuesday:/*...*/break;/*...*/}我

c++ - if、switch 和函数指针速度比较

我正在构建一个小型解释器,因此我想测试ifs、switch和函数指针相互比较的速度。if有19个elseifs比有2​​0个case的switch稍快,而函数指针(20个函数指针的数组)比前两个慢得多...我预计结果会完全相反,谁能解释一下? 最佳答案 在现代处理器上,其中很多都归结为分支预测。虽然switch语句可以实现为一个跳转表,它执行代码的任何分支所花费的时间大致相同,但它通常也是相当不可预测的——从字面上看;分支预测器在预测采用哪个分支方面通常做得很差,这意味着很有可能出现管道泡沫(通常大约浪费15个周期左右)。if语句可

c++ - 在 switch 语句中使用 vector 时出现 "Jump to case label"错误。

这个问题在这里已经有了答案:Whycan'tvariablesbedeclaredinaswitchstatement?(23个回答)关闭9年前。这是代码,当我添加其他大小写或默认值时,会出现几个错误。我找不到任何基本错误,例如缺少分号等,并且当我只有一种情况时,代码可以正常工作。我搜索了switch教程,但我没有发现任何关于vector和switch语句混合的问题。intmain(){intr;while(cin>>r){switch(r){case3:inty=0;coutnums;intx;while(cin>>x){nums.push_back(x);y++;}sort(num

C++ Switch不会使用用作大小写的外部定义变量进行编译

我正在使用MinGWGNU编译器编写C++,当我尝试使用外部定义的整数变量作为switch语句中的case时出现问题。我收到以下编译器错误:“caselabeldoesnotreducetoanintegerconstant”。因为我已经将整数变量定义为extern我相信它应该可以编译,有人知道问题出在哪里吗?下面是一个例子:测试.cpp#include#include"x_def.h"intmain(){std::coutx_def.hexternconstinttest_int;x_def.cppconstinttest_int=0;此代码将在VisualC++2008上正确编译。

c++ - Switch 中不正确的多个案例不会生成编译器错误

这个问题在这里已经有了答案:Whatdoescommaoperatormeaninaswitchstatement?(6个答案)关闭7年前。我知道这段代码没有按“预期”工作。快速看一下这段代码,我们认为返回值应该是1,但在执行中它返回返回3。//incorrectvariable=1;switch(variable){case1,2:return1;case3,4:return2;default:return3;}并且有一些正确的选项可以做到这一点://correct1variable=1;switch(variable){case1:case2:return1;case3:case4