首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有了 for 循环,为什么还要 while(1)?

有读者问题了类似这样的问题:while(1) 和 for(;;)它们不都是无限循环吗,作用应该一样啊,它们到底有什么区别?...要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你就大概知道了。...1.while语法表达 while( 表达式 ) { 语句 } 其中: 表达式:是循环条件 语句:为循环体。...注 意 文末有:7701页互联网大厂面试题 while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。...1.相同点 作用和效果都一样:都是实现无限循环的功能。 2.不同点 while(1):其中括号里面是一个条件,程序会判断真假。而括号里面的“1”永远是一个“真值”。

64120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 为什么不设计 do-while 循环结构?

    在回答这个问题之前,让我们再仔细思考一下 do-while 语法可以解决什么问题,看看使用这种结构能带来什么好处? 最显而易见的好处是:do-while 语法保证了会先执行一遍循环体代码。...分析完 do-while 的好处后,让我们回到主题:Python 为什么不需要设计 do-while 循环语法呢?...body> 这不是简单地从其它语言翻译成 Python,它的 while 语句后保留了 Python 的缩进用法,并不会造成直译形式的突兀结果。...有了 do 子句后,很容易就能实现 do {...} while (0) 的跳转控制效果。 但是,这个 PEP 遭到了一些核心开发者的反对。...简单翻译一下,这种 do-while 语法并不会使 Python 更优雅好用,反而会产生阅读/维护代码的理解负担。

    1.2K10

    Java 中为什么不推荐在 while 循环中使用 sleep()

    前言最近逛 CSDN 看到一篇文章,文章大意是说为什么在循环中不推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...Demo { private static final boolean FLAG = true; public static void main(String[] args) { while...sleep 可能会导致忙等待 // 如 FLAG 变量状态未改变 那么线程可能一直循环,并不断进行线程挂起和唤醒原因是否正确主要原因和原文博主所说有很大的关系但不完全正确:我们都知道 Java 线程实际对应着操作系统中的一个线程...,对线程的挂起和唤醒是一个很耗性能的操作,因此我们需要避免对线程进行挂起和唤醒;但还一个重要的原因是忙等待,如上文所示 FLAG 变量的状态可能永远不会被改变,那么线程将会不断进行挂起和唤醒,进入忙等待状态...我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。 保持关注我的博客,让我们共同追求技术卓越。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    1.6K30

    抖音二面:为什么模块循环依赖不会死循环?CommonJS和ES Module的处理有什么不同?

    多次引入 同样由于缓存,一个模块不会被多次执行,来看下面这个例子:入口模块引用了a、b两个模块,a、b这两个模块又分别引用了c模块,此时并不存在循环引用,但是c模块被引用了两次。...循环引入 和CommonJS一样,发生循环引用时并不会导致死循环,但两者的处理方式大有不同。...ES Module来处理循环使用一张模块间的依赖地图来解决死循环问题,标记进入过的模块为“获取中”,所以循环引用时不会再次进入;使用模块记录,标注要去哪块内存中取值,将导入导出做连接,解决了要输出什么值...结语 回到开头的三个问题,答案在文中不难找到: CommonJS和ES Module都对循环引入做了处理,不会进入死循环,但方式不同: CommonJS借助模块缓存,遇到require函数会先检查是否有缓存...,已经有的则不会进入执行,在模块缓存中还记录着导出的变量的拷贝值; ES Module借助模块地图,已经进入过的模块标注为获取中,遇到import语句会去检查这个地图,已经标注为获取中的则不会进入,地图中的每一个节点是一个模块记录

    1.9K10

    多线程:为什么在while循环中加入System.out.println,线程可以停止

    ,由于 stopReqested 的更新值在主内存中,而线程栈中的值不是最新的,所以会一直循环,线程并不能停止。...最开始的代码,一直处于试了循环中,CPU 处于一直被饱受占用的时候,这个时候 CPU 没有时间,JVM 也不能强制要求 CPU 分点时间去取最新的变量值。...这个时候CPU就有可能有时间去保证内存的可见性,于是while循环可以被终止。...其实,也可以在 while 循环里面加上 sleep ,让 run 方法放弃 cpu ,但是不放弃锁,这个时候由于 CPU 有空闲的时候就去按照 JVM 的要求去保证内存的可见性。如下所示。...run 方法里面休息了 3 秒,cpu 有充足的空闲时间去取变量的最新值,所以循环执行一次就停止了。

    1.5K50

    Tkinter mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值?

    1、问题背景在使用 Tkinter 开发 GUI 程序时,您可能会遇到这样的疑问:为什么在使用 window.mainloop() 循环时,变量不会被重新赋值为它们的初始值?...既然如此,为什么一个变量(例如 canvastext)可以被更新并保持更新状态?...也许我对 window.mainloop() 的作用完全误解了,但如果它确实使程序不断循环执行代码,那么为什么不将变量重新赋值为它们的初始值呢?...处理函数可以修改变量的值,但不会影响其他代码中的变量。也就是说,变量的值只会在处理函数中被修改,而在其他代码中不会被修改。...希望这篇技术文章能够帮助您理解 Tkinter window.mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值。

    28710

    触摸Android的心脏跳动

    = 0) { while (p !...有了这个基础下面的问题就简单了: 为什么主线程不会陷入无限循环? 主线程的消息循环不会陷入无限循环,因为它不断地从消息队列中获取消息并处理它们。...如果没有消息要处理,消息循环会进入休眠状态,不会持续消耗 CPU 资源。只有在有新消息到达时,主线程才会被唤醒来处理这些消息。这个机制确保主线程能够响应用户的操作,而不陷入死循环。...如果消息队列为空,主线程的消息循环会等待,直到有新消息到达。在等待期间,它不会执行任何操作,也不会陷入循环。...这种事件驱动的消息循环机制使得 Android 应用能够高效地管理用户交互和异步操作,同时保持了响应性和低能耗。所以,主线程不会陷入无限循环,而是在需要处理事件时才会执行相应的代码。

    22410

    【python入门系列课程 第八课 不停止的while循环】

    while循环?为什么已经有了for循环,还需要有个while循环呢? 先来举个例子: 用锤子敲钉子时,你不能只是敲几下,就希望将钉子敲进去。而是要在钉子仍然露在外面时不断地敲它。...while循环格式: 在编程中可以使用while 循环,在条件为真时重复一个命令或者一组命令,为假时不进入循环。 ? 执行流程图: ? 进入循环 当条件一直为真时,就会无限循环,一直执行里面的语句。...下面代码会不停的打印出 不断增加的数字,注意要按下停止键(不然计算机可能会陷入死机状态)。 代码: i=1 while True: print(i) i=i+1 效果: ?...解释: 上面True就是条件,条件是真的,所以就会一直循环,打印出数字。不主动停止程序就不会停下来。 不进入循环 那如果不想让它进入循环该怎么办呢?只需要让条件变为False就可以了。...反复执行的程序段称为循环体,循环条件必须要在循环体中改变,否则可能会出现无限循环的结果。

    99610

    内存泄漏篇〡如何找出PHP进程占用CPU高的幕后元凶

    技术团队的第一直觉是某个PHP进程很可能陷入了死循环,导致其不断占用大量CPU资源,从而引发这一问题。 背景 本周末业务反馈在进入页面时遇到白屏,无法正常打开浏览器页面进行学习。...考虑到本周末的使用人数人数应该不会很大,理论上系统资源的使用不应如此之高。 因此,技术团队的第一反应是某个PHP进程可能陷入了死循环,导致资源占用过高。...正常情况下业务处理完毕对应进程会恢复为idle状态,这一般情况下不会有什么问题。 但是如果一直是busy状态没有恢复过idle状态,则说明进程内的业务有阻塞或者无限循环,可以通过以下方法定位。...远程地址是172.18.207.82:mysql,说明进程应该是在访问一个数据库资源,循环poll([{fd=9, events=....是一直在等待数据库服务端返回数据,这解释了为什么进程处于busy...while 循环是一个常见的潜在问题源。 不过,死循环不仅限于 while 循环,还可能由其他类型的循环结构或不当的触发器使用引起。但在此,我们主要聚焦于 while 循环导致的死循环问题。

    13310

    第四章3:while 循环

    星期三:while循环 今天我们将讨论另一种循环——while循环。昨天我们看到了循环的工作原理,以及为什么要使用for循环。当你需要根据条件而不是计数循环时,通常使用while循环。...让我们来看下面这个例子: # 写下你的第一个while循环 health = 10 while health > 0: print(health) health -= 1 # 丢失这一行将会使结果一直循环下去...如果我们对变量health值不做任何修改,那么,整个while循环就会变成无限循环(遇到这种情况是极其糟糕的)。 While vs....---- 无限循环 在之前的章节中,我曾提到无限循环是不好的。无限循环将使代码持续运行直到程序中断,或计算机关机或时间停止为止。知道了这些后,在我们创建项目时,请一定要避免创建无限循环的代码块。...while循环只有在条件变量game_over为True时,才会停止循环,而输出结果只有0,1,2。 ---- 小提示:使用break语句,防止程序陷入无限循环。

    1.5K20

    Java开发者的囧境:那些让你苦笑不得的Bug

    别让自己陷入无限循环 // 代码示例:无限循环的Bug while (condition) { // 一系列操作 } 在某些情况下,由于条件设置不当,循环可能变成了无尽之旅,让你陷入调试的深渊。...记得检查你的循环条件,别让自己陷入死循环的泥潭。 情景描述 无限循环是一个经典的Bug场景,特别是在使用while循环时。通常是因为循环条件没有被正确更新或者在循环体内没有正确的逻辑来中断循环。...建议与注意事项 循环条件检查: 在使用while循环时,确保循环条件能够在某个时刻变为false,否则会导致无限循环。...设置中断条件: 在循环体内设置中断条件,确保在一定条件下能够退出循环,避免陷入死循环。 使用for循环: 在能够使用for循环的情况下,相对于while更容易控制循环次数,减少无限循环的可能性。...这个例子展示了一个错误的逻辑,导致了循环条件永远为true,从而产生无限循环。

    5810

    while和if的区别解析

    1.概念区别 while和if是两个不同的语句用于控制程序流程的关键字。 while语句: 用途:while语句用于创建一个循环结构,当给定条件为真时,重复执行一段代码块。...这个过程会一直重复,直到condition为假(0)为止。每次循环执行完code block后会再次检查condition的值,因此在循环的结束条件变为假之前,循环会一直执行下去。...if语句只会执行一次,不会进行循环。...2.总结  总结: while和if的区别在于: while用于创建循环结构,重复执行一段代码块,直到给定条件不满足; if用于根据条件选择执行一段代码块,只会执行一次。...需要注意的是,在编写代码时,要确保循环的结束条件能够在某个时刻成为假,否则循环会陷入无限循环中,导致程序无法终止。

    95610

    Infinite Loop: 如何避免代码陷入死循环

    Infinite Loop: 如何避免代码陷入死循环 摘要 大家好,我是默语,擅长全栈开发、运维和人工智能技术。...今天,我们将探讨一个常见而棘手的编程问题——如何避免代码陷入死循环。死循环不仅会导致程序无法继续执行,还可能造成系统资源浪费和应用程序崩溃。...三、避免死循环的最佳实践 ️ 3.1 确保循环条件正确 ️ 在编写循环时,确保条件表达式能够在预期的情况下正确退出。例如,避免使用 while(true) 这种形式的无限循环,除非确实需要。...++; } 3.3 使用超时机制 ⏲️ 在某些情况下,可以使用超时机制来避免无限循环。...小结 本文深入探讨了如何避免代码陷入死循环的各个方面,包括死循环的定义、检测方法、避免措施和最佳实践。

    15810

    C语言循环结构-学习九

    while语句 一般形式: while(表达式){ 语句; } 流程图 image.png 注意: 在循环体中应有使循环趋向于结束的语句,否则程序会陷入死循环,无限执行语句...程序陷入死循环,结束用atrl+break 循环体中如果包含一个以上的语句,要用{}括起来!...如果为真,则执行循环,这个过程会不断重复。在条件变为假时,for 循环终止。 for和while可以完成同样的循环功能,但for更为简洁和高效。...for语句功能更强,凡是用while循环能完成的,用for循环都能实现 用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1...例子 思路: 设置变量高度h,折叠次数n 循环终止条件 h > 8848000 折叠的算法 h = pow(2,n); n=n+1; (pow是计算次方的函数) 假设一张纸足够大并且可以无限折叠,这张纸的厚度是

    65420

    【JavaSE专栏14】Java 的 while 循环语句

    在每次循环迭代之前,都会先计算条件表达式的值。 需要注意的是,如果条件表达式一开始就是假的,那么循环体内的代码将不会执行,直接跳过循环。...另外,要确保在循环体内对条件表达式进行修改或者在循环体内部使用break语句来跳出循环,以免造成无限循环的情况发生。...运行上述代码,输出结果将是: 1 2 3 4 5 这个例子展示了使用 while 循环来重复执行一段代码的过程。您可以根据自己的需求定制条件表达式和循环体内的代码,以适应不同的情况。...适用于处理事件驱动的情况:当需要根据事件的发生与否来重复执行代码时,while循环能够很好地满足这个需求。...需要注意的是,使用while循环时应确保在循环体内更新条件表达式的值,以防止无限循环的发生。同时,循环体内部需要有明确的退出机制,以避免陷入死循环。

    84820

    JavaScript循环读书笔记

    while:while循环能重复执行动作,直到特定条件语句为true。 for循坏由4部分组成。...4.更新(update):循环里的负责更新每一轮循环的循环变量。...具体组成: for(Init;Test;Update) { Action; } while循环由两个不同部分组成: 1.测试条件(Test Condition) 2.行动(Action) while(Test...注意的问题:我们必须确保循环里面有影响测试条件的程序代码,否则就有陷入无限循环的风险。 第二部分: break和continue的不同点。 当循环遇到break语句,它会立即结束、完全无视条件语句。...continue会摆脱当前这一轮循环,但不会完全跳出循环,而是强迫跳入下一轮循环。 第三部分: 数组概念: 一维数组,二维数组和多维数组 数组(array):可用于存储多块数据于一体的变量。

    96070

    JavScript中的循环

    循环知识 第一部分: 重复运行的代码就可以使用循环来解决。JavaScript的重复机制为循环(loop) for:适合重复动作已知次数的循环。...while:while循环能重复执行动作,直到特定条件语句为true。 for循坏由4部分组成。...具体组成: for(Init;Test;Update) { Action; } while循环由两个不同部分组成: 1.测试条件(Test Condition) 2.行动(Action) while(Test...注意的问题:我们必须确保循环里面有影响测试条件的程序代码,否则就有陷入无限循环的风险。 第二部分: break和continue的不同点。 当循环遇到break语句,它会立即结束、完全无视条件语句。...continue会摆脱当前这一轮循环,但不会完全跳出循环,而是强迫跳入下一轮循环。 第三部分: 数组概念: 一维数组,二维数组和多维数组 数组(array):可用于存储多块数据于一体的变量。

    1.9K70
    领券