相关疑难解决方法(0)

会使用goto泄漏变量吗?

goto跳过代码而不调用析构函数和事物是真的吗?

例如

void f() {
   int x = 0;
   goto lol;
}

int main() {
   f();
lol:
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

会不会x泄露?

c++ goto

91
推荐指数
1
解决办法
7867
查看次数

是否使用GOTO?

目前我正在开发一个使用goto语句的项目.goto语句的主要目的是在例程中使用一个清理部分而不是多个return语句.如下所示:

BOOL foo()
{
   BOOL bRetVal = FALSE;
   int *p = NULL;

   p = new int;
   if (p == NULL)
   {
     cout<<" OOM \n";
     goto Exit;
   }

   // Lot of code...

Exit:
   if(p)
   {
     delete p;
     p = NULL;
   }
   return bRetVal;
}
Run Code Online (Sandbox Code Playgroud)

这使得我们可以更容易地跟踪代码中一个部分的清理代码,即在Exit标签之后.

但是,我已经阅读了许多地方,有goto语句是不好的做法.

目前我正在阅读Code Complete书,它说我们需要使用接近其声明的变量.如果我们使用goto,那么我们需要在第一次使用goto之前声明/初始化所有变量,否则编译器会给出goto语句跳过xx变量初始化的错误.

哪条路对不对?


来自Scott的评论:

看起来使用goto从一个部分跳转到另一个部分是不好的,因为它使代码难以阅读和理解.

但是如果我们只使用goto前进到一个标签那么它应该没问题(?).

c++ goto

61
推荐指数
14
解决办法
8万
查看次数

相当于python中的GOTO

我自学了python 2.7.我有使用BATCH的经验,它有一个GOTO语句.我怎么在python中做到这一点?例如,假设我想从第5行跳到第18行.

我意识到之前有关于这个主题的问题,但我没有发现它们足够的信息,或者在我目前的理解中python级别太高.

python goto

42
推荐指数
5
解决办法
29万
查看次数

使用goto是一种合法的方式来打破两个循环?

我正在解决Project Euler上的问题9 .在我的解决方案中,我使用"goto"语句来打破两个for循环.问题如下:

毕达哥拉斯三元组是一组三个自然数,abc,为此,

a ^ 2 + b ^ 2 = c ^ 2

例如,3 ^ 2 + 4 ^ 2 = 9 + 16 = 25 = 52.

恰好存在一个毕达哥拉斯三元组,其中a + b + c = 1000.找到产品abc.

我的解决方案是在c ++中:

int a,b,c;
const int sum = 1000;
int result = -1;
for (a = 1; a<sum; a++){
    for (b = 1; b < sum; b++){
            c = sum-a-b;
            if (a*a+b*b == c*c){
                result = a*b*c;
                goto found;
            }
    } …
Run Code Online (Sandbox Code Playgroud)

c++ goto

19
推荐指数
3
解决办法
6510
查看次数

对可怕的While(True)循环进行最佳重构

如果像我一样,你在一个While(True)循环的位置颤抖,那么你也必须经过长时间的努力思考重构它的最佳方法.我已经看到了几种不同的实现,没有一种比其他任何实现更好,例如timer和delegate组合.

那么你提出或看到重构可怕的While(True)循环的最佳方法是什么?

编辑:正如一些评论所提到的,我的意图是这个问题是一个"无限循环"重构,例如运行Windows风格的服务,其中唯一的停止条件是OnStop或致命异常.

refactoring loops while-loop

11
推荐指数
9
解决办法
1万
查看次数

使用goto会导致内存泄漏吗?

我有一个程序,我需要打破一大堆嵌套for循环.到目前为止,大多数人告诉我这样做的方式是在我的代码中使用一个丑陋的goto.

现在,如果我创建一堆本地堆栈(我认为这就是它们被称为,如果不是,我的意思是只使用常规变量而不使用新命令)我的循环中的变量和我的程序命中一个if语句触发goto,我会遇到内存泄漏,因为我的程序不正确地退出许多循环并且没有清理局部变量?

c++ memory-leaks goto

11
推荐指数
2
解决办法
2336
查看次数

Java什么是双下划线符号?

我正在浏览网页并找到了这个例子.在public static void main方法中,这是我以前从未见过的行语法__main:

如:

public class Klass {
    public static void main(String[] args) {
        // code goes here...
__main:
        // and mode code here...
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试将其打入eclipse并使用工具提示获得一个黄色下划线,其中说"标签__main从未明确引用".

我在网上找不到任何东西,我真的很好奇!我已经用Java编程多年了,我以前从未见过这种语法.它做了什么,你为什么要使用它,我在哪里可以学到更多?

java syntax notation

9
推荐指数
3
解决办法
3806
查看次数

可以在C程序中终止时调用代码吗?

在C++中,如果我希望代码调用一些不好的事情,我可以将代码放在析构函数或try-catch中.

在C中是否有类似的技术,如果程序意外终止,我可以调用特定的例程(清理资源)?

c

4
推荐指数
1
解决办法
111
查看次数

可以在for循环之外适当地使用java标签吗?

所以我已经看到很多情况,其中标签被用于for循环,特别是双嵌套循环.

这是唯一可以使用它们的情况吗?还是有其他我不知道的常见用途.我觉得它是一个我从未使用过的java工具!

java label for-loop

3
推荐指数
2
解决办法
1287
查看次数

语言标准中的 goto 语句

现在大多数人不在goto他们的代码中使用语句。好的。在 SO 中,有许多线程在goto使用,所有线程都“允许”它退出深度循环。

展示一些:

GOTO 仍然被视为有害吗?

使用 goto 有什么问题?

在支持循环和函数的语言中是否存在“goto”的合法用例?

C 或 C++ 中良好的 goto 示例

我查看了cppreference.com,其中显示:

当无法使用其他语句将控制转移到所需位置时使用。

敲响我警钟的是“否则不可能

goto任何机构都可以举出一些无法避免的例子吗?

注意:我将此问题标记为“C++”,只是因为我对 C++ 示例更感兴趣。任何其他语言对我都有好处。

c++ language-agnostic goto

3
推荐指数
1
解决办法
221
查看次数