草庐IT

c++ - 你能用 C++ 做一个计算 goto 吗?

Fortran有一种计算效率高的方法,称为“计算转到”。该构造使用分支表中的索引来执行直接转到。如果我没记错的话语法是:gotoindex(label1,label2,...)索引用于引用括号列表中的代码指针(标签)。我有一个案例,其中计算的goto是比switch语句更好的解决方案,我想构建一个,但我不知道如何构建。现在在jibes和slings到来之前,编译器可以优化计算的goto,但我不能保证它会。始终可以使用switch语句。在某些情况下,switch语句可以优化为跳转表(计算goto的实现)。但是,这只有在case值的范围几乎是密集覆盖时才有可能(从低值到高值的范围内几乎每个

c++ - 你能不用 goto 重写这段代码吗

伙计们,我在一个遍历树的大while循环中有以下代码。这是我可以获得此例程的最快速度,但我必须使用goto。我不是从根本上反对goto,但如果我能避免它们,我愿意。(拜托,我不是要挑起一场口水战。)约束条件:current=current->child()开销很大(它是一个shared_ptr)所以我想不惜一切代价尽量减少该操作的使用。操作后current应该是它找到的最后一个child。cnt必须计算它遇到的每个child。cnt++将被一些其他操作(或多个操作)取代,并且应该只出现一次:)代码:insideloopy:cnt++;if(current->hasChild()){cu

c++ - C/C++ 中可中断的命名范围

介绍这个问题来自这个问题:Thenamedloopidiom:dangerous?.对于不想阅读原始问题的人来说,这是关于做这样的事情:named(label1)for(inti=0;i这个新问题是关于“命名循环”习语的改进版本。如果你懒得阅读整篇文章,你可以直接进入这篇文章的“示例”部分,清楚地理解我在说什么。设计缺陷不幸的是,这个问题很快就结束了(后来又重新打开了),因为它更像是一个利弊辩论,而不是一个纯粹的技术问题。似乎它不适合SOQ&A格式。此外,我提供的代码有几个缺陷:关键词break由宏重新定义宏是用小写字母写的它使一些可怕的东西可以编译(至少使用MSVC):intfoo(

c++ - 转到无法执行的代码行

我一直被教导几乎从不在编程中使用goto语句。但是,作为我最近的编程项目的一部分,我们必须这样做。我有一个带有各种goto语句的if/else语句,并且goto语句无法执行。我不知道为什么。任何帮助将不胜感激。intmyInt=XXXXXXX;if((myInt>>22)&7==X)gotoa;elseif((myInt>>22)&7==Y)gotob;elseif((myInt>>22)&7==Z)gotoc;a:printf("thisalwaysexecutes\n");gotoend;b:printf("thisneverexecutes\n");gotoend;c:print

c# - 为什么不用 GOTO 语句?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我正在攻读软件工程硕士学位。从大学到大学,我从我的老师和讲师那里听说从不在编程语言中使用GOTO语句。根据D.Sundar的软件工程USEofgotostatementsmakesaprogramunstructuredandmakesitverydifficulttounderstand.我也在MICROSOFT的书的第一页上读到了同样的内容,在编程中从不使用GOTOStatmement

C++ - Kazushige Goto 论文中的优化矩阵乘法在 O3 标志中的表现比 naive 差

相关论文是here.我正在尝试重现KazushigeGoto关于快速矩阵乘法的开创性论文,方法是将其衰减为gepp(通用面板-面板)和gebp(通用block-面板)乘法的子例程,这显然是gemm最快的构建block。我编写了下面的代码来测试它并使用-O3标志,我发现我的代码的性能实际上更差比朴素的矩阵乘法:(~0.5xincrease)Timeelapsed:3.82941但是,如果没有-O3标志,我们看到速度确实比原始版本快:(~4xincrease)Timeelapsed:53.4537根据@ztik的建议,我在没有使用-mavx2-O3标志的情况下进行了尝试,并添加了-O2,它

c++ - 为什么可以跳入不带初始值设定项的标量类型对象的范围?

当我阅读C++标准时,根据标准,以下代码似乎完全没问题。intmain(){gotolol;{intx;lol:cout[n3290:6.7/3]:Itispossibletotransferintoablock,butnotinawaythatbypassesdeclarationswithinitialization.Aprogramthatjumpsfromapointwhereavariablewithautomaticstoragedurationisnotinscopetoapointwhereitisinscopeisill-formedunlessthevariable

c++ - C++ 中的 goto 和 RAII

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Gotooutofablock:dodestructorsgetcalled?我知道C和C++中的goto运算符几乎在所有情况下都是无用的,但我想知道这个问题的答案只是出于兴趣,它没有实际意义。C++标准是否保证在这种情况下必须正确调用对象的析构函数?#includeclassFoo{public:Foo(){std::couthttp://liveworkspace.org/code/06031e6699c8fddda94b8594ccab1387那么goto和C++RAII的其他异常情况呢?如果您能在这里

c++ - 使用 goto 干净地退出循环

我有一个关于在C++中使用goto语句的问题。我知道这个话题是有争议的,并且对任何笼统的建议或争论不感兴趣(我通常不使用goto)。相反,我有一个特定的情况,想了解我使用goto语句的解决方案是否是一个好的解决方案。我不会称自己是C++新手,但也不会将自己归类为专业级程序员。一旦开始,产生我的问题的代码部分就会在无限循环中旋转。伪代码中线程的大致流程如下:voidControlLoop::main_loop(){InitializeAndCheckHardware(pHardware)//pHardwareisapointergivenfromoutside//Themainloopw

php - 在函数 php 中使用 goto

有没有办法为PHPgoto定义全局标签(类似于变量),以便在函数声明中使用它。我想执行以下操作:functionmyFunction(){if(condition){gotosomeLine;}}someLine://....myFunction();当我使用这段代码时,它说PHPFatalerror:'goto'toundefinedlabel"someLine"我知道不推荐使用goto语句。但我需要它。我知道也许总是有goto的替代方案,就我而言,它会使代码更容易理解 最佳答案 我认为你不能转到函数之外:http://php.n