Nested 允许的最大嵌套条件数

Nested 允许的最大嵌套条件数,nested,Nested,有人知道嵌套条件的限制吗(我指的是在另一个条件下的条件,多次)?比如说,在Java和Visual Basic中 我记得当我开始开发跟踪时,我在VB 6中创建了3个嵌套条件,编译器没有进入第三个,现在我记得我从来没有,知道一种语言可以采用的最大嵌套编码。逻辑上,我认为限制基于Java中应用程序可用的内存。逻辑上,我认为限制基于Java中应用程序可用的内存。真正的编程语言不应该存在限制。对于VB.NET和Java,如果有任何限制,我会感到震惊。限制不是内存,因为我们讨论的是编译时约束,而不是执行环境

有人知道嵌套条件的限制吗(我指的是在另一个条件下的条件,多次)?比如说,在Java和Visual Basic中


我记得当我开始开发跟踪时,我在VB 6中创建了3个嵌套条件,编译器没有进入第三个,现在我记得我从来没有,知道一种语言可以采用的最大嵌套编码。

逻辑上,我认为限制基于Java中应用程序可用的内存。

逻辑上,我认为限制基于Java中应用程序可用的内存。

真正的编程语言不应该存在限制。对于VB.NET和Java,如果有任何限制,我会感到震惊。限制不是内存,因为我们讨论的是编译时约束,而不是执行环境约束

这在C#中可以找到:应该注意的是,编译器可能会对此进行优化,甚至不使用IFs

static void Main(string[] args)
{
    if (true)
    {
        if (true)
        {
            if (true)
            {
                if (true)
                {
                    if (true)
                    {
                        if (true)
                        {
                            if (true)
                            {
                                if (true)
                                {
                                    if (true)
                                    {
                                        if (true)
                                        {
                                            if (true)
                                            {
                                                if (true)
                                                {
                                                    if (true)
                                                    {
                                                        if (true)
                                                        { Console.WriteLine("It works"); }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
不应对此进行过多优化:

static void Main(string[] args)
{
    if (DateTime.Now.Month == 1)
    {
        if (DateTime.Now.Year == 2011)
        {
            if (DateTime.Now.Month == 1)
            {
                if (DateTime.Now.Year == 2011)
                {
                    if (DateTime.Now.Month == 1)
                    {
                        if (DateTime.Now.Year == 2011)
                        {
                            if (DateTime.Now.Month == 1)
                            {
                                if (DateTime.Now.Year == 2011)
                                {
                                    if (DateTime.Now.Month == 1)
                                    {
                                        if (DateTime.Now.Year == 2011)
                                        {
                                            if (DateTime.Now.Month == 1)
                                            {
                                                if (DateTime.Now.Year == 2011)
                                                {
                                                    if (DateTime.Now.Month == 1)
                                                    {
                                                        if (DateTime.Now.Year == 2011)
                                                        { Console.WriteLine("It works"); }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    Console.ReadKey();
}

对于真正的编程语言,不应该存在任何限制。对于VB.NET和Java,如果有任何限制,我会感到震惊。限制不是内存,因为我们讨论的是编译时约束,而不是执行环境约束

这在C#中可以找到:应该注意的是,编译器可能会对此进行优化,甚至不使用IFs

static void Main(string[] args)
{
    if (true)
    {
        if (true)
        {
            if (true)
            {
                if (true)
                {
                    if (true)
                    {
                        if (true)
                        {
                            if (true)
                            {
                                if (true)
                                {
                                    if (true)
                                    {
                                        if (true)
                                        {
                                            if (true)
                                            {
                                                if (true)
                                                {
                                                    if (true)
                                                    {
                                                        if (true)
                                                        { Console.WriteLine("It works"); }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
不应对此进行过多优化:

static void Main(string[] args)
{
    if (DateTime.Now.Month == 1)
    {
        if (DateTime.Now.Year == 2011)
        {
            if (DateTime.Now.Month == 1)
            {
                if (DateTime.Now.Year == 2011)
                {
                    if (DateTime.Now.Month == 1)
                    {
                        if (DateTime.Now.Year == 2011)
                        {
                            if (DateTime.Now.Month == 1)
                            {
                                if (DateTime.Now.Year == 2011)
                                {
                                    if (DateTime.Now.Month == 1)
                                    {
                                        if (DateTime.Now.Year == 2011)
                                        {
                                            if (DateTime.Now.Month == 1)
                                            {
                                                if (DateTime.Now.Year == 2011)
                                                {
                                                    if (DateTime.Now.Month == 1)
                                                    {
                                                        if (DateTime.Now.Year == 2011)
                                                        { Console.WriteLine("It works"); }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    Console.ReadKey();
}

我必须同意,这个限制纯粹是基于内存限制。如果你达到了它,我希望你会达到某种堆栈溢出限制,但是我怀疑你是否有可能达到这个限制


我找不到支持这一点的参考源,但对40多条嵌套if语句进行了快速测试,编译后运行良好。

我必须同意,该限制完全基于内存限制。如果你达到了它,我希望你会达到某种堆栈溢出限制,但是我怀疑你是否有可能达到这个限制


我找不到支持这一点的参考源,但对40多条嵌套if语句进行了快速测试,测试结果良好。

嵌套条件的数量限制几乎肯定取决于编译器堆栈和数据结构的大小,与运行时环境无关,除非目标环境的代码空间相对于编译器可用内存受到严重限制(例如,使用现代PC为带有512字节闪存的小型微控制器编译程序)。请注意,在运行时不需要RAM(除了用于存储代码本身的任何RAM之外)来计算深度嵌套的逻辑运算符组合,除了其中最复杂的项所需的内存(即计算所需的内存)(foo()| | bar())和&boz()'是计算foo()、bar()或boz()所需的最大内存)


实际上,在现代机器上使用现代编译器是不可能达到极限的,除非人们编写“程序”的目的是为了超过它(我预计这个极限可能在1000到1000000个嵌套级别之间,但即使“只有”1000个,也没有理由嵌套那么深).

嵌套条件数的限制几乎肯定取决于编译器堆栈和数据结构的大小,与运行时环境无关,除非目标环境的代码空间相对于编译器可用内存受到严重限制(例如,使用现代PC为具有512字节闪存的小型微控制器编译程序)。请注意,运行时不需要RAM(除了用于存储代码本身的任何RAM之外)来评估逻辑运算符的深度嵌套组合,除非其中最复杂的术语需要(即,计算所需的内存’(foo()| | bar())&&boz()是计算foo()、bar()或boz()所需的最大内存)


实际上,在现代机器上使用现代编译器是不可能达到极限的,除非人们编写“程序”的目的是为了超过它(我预计这个极限可能在1000到1000000个嵌套级别之间,但即使“只有”1000个,也没有理由嵌套那么深).

如果您是指嵌套的
如果
块,则没有理论上的限制。唯一的限制是用于存储源代码和/或编译代码的可用磁盘空间。如果每个块生成一个新堆栈帧,则也可能有运行时限制,但这只是内存限制


对于经验结果3的唯一解释是编程错误或解释结果时出错。

如果您是指嵌套的
If
块,则没有理论限制。唯一的限制是存储源代码和/或编译代码的可用磁盘空间。如果每个block生成一个新的堆栈帧,但这只是一个内存限制


对你的实证结果3的唯一解释是编程错误或解释结果的错误。

我同意这里的大多数人的观点,即写if块没有限制。但是java方法大小有一个最大限制。我相信它是64K。我同意大多数人的观点写if块没有限制。但是java方法大小有一个最大限制。我相信它是64K。

我必须相信这样的限制取决于RAM,这是一个很好的答案,但我正在寻找更具体的东西,比如说3或5,就像一个example@Chuck伯金为了给你提供一个更具体的我们需要分析您机器上的内存限制并确定