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

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

有读者问题了类似这样的问题:while(1) 和 for(;;)它们不都是无限循环吗,作用应该一样啊,它们到底有什么区别?...要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你就大概知道了。...1.while语法表达 while( 表达式 ) { 语句 } 其中: 表达式:是循环条件 语句:为循环体。...注 意 文末有:7701页互联网大厂面试题 while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。...5.循环结束,执行for语句下面的一个语句。 执行过程可用下图表示: while(1)和for(;;)异同点 这里先说一下结论,然后再验证验证结论。

59620

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...// do something }}上面的代码你可能会得到下面的警告:Call to ‘Thread.sleep()’ in a loop, probably busy-waiting// 循环中调用...sleep 可能会导致忙等待 // 如 FLAG 变量状态未改变 那么线程可能一直循环,并不断进行线程挂起和唤醒原因是否正确主要原因和原文博主所说有很大的关系但不完全正确:我们都知道 Java 线程实际对应着操作系统中的一个线程...,对线程的挂起和唤醒是一个很耗性能的操作,因此我们需要避免对线程进行挂起和唤醒;但还一个重要的原因是忙等待,如上文所示 FLAG 变量的状态可能永远不会被改变,那么线程将会不断进行挂起和唤醒,进入忙等待状态

58330

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

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

1.5K50

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

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

1.4K10

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

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

14410

关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。

1148436/activities) 前序 本文将会把一下三个问题阐述清楚以及一个网上的普遍观点的补充:     1,安卓 APP 启动过程,对于Activity 的 onCreate 等生命周期的函数为什么不会因为...2,在 1 的基础上,View 的绘制到底是怎样完成的,它又为什么不会因为 Looper.loop()里的死循环卡死而永无机会刷新。     ...总结:Activity 的 生命周期函数都是在 Looper 里面的死循环中被 ActivityThread 内部的 Handler 的 handleMessage 入口调用的,本身在循环里面调用,也就不会被阻塞...,在这个函数里面,将会进行第一次跨进程通讯,AMS运行在系统进程,而我们的APP是另外一个进程。...第三个补充   网上对于博文标题的这个问题的解析普遍是:见前序的第三点,这里要补充的是,如果是 View 的 UI 刷新,不会导致阻塞的原因是本文的第二个解释,View 的绘制与 Java 代码的looper

1.4K50

python else语句在循环中的运用详解

在学习python循环语句的时候,发现else竟然可以和循环语句使用,但是它却与if中else语句的运行完全不同,有时候你真的感觉掉进这个else陷阱里了,完全不知道该怎么用,那么现在咱们一起去看看吧...2、其次else与那个循环对齐,那么这个else就属于那个循环,当这个循环正常结束后就会执行else中的语句,否则遇到break就会提前跳出循环,那么就将无法执行else中的语句 ​3、看代码,外循环循环...那么就也是说当while循环正常结束的时候才会执行else语句,若被break则将无法执行 (2)分析:将内循环计数器改为j = 6为什么会输出10个小于?...首先要知道,不管是while循环还是for循环,使用else都是一样的道理,当循环正常结束才会执行else,否则将不会执行else语句。 外循环循环10次,内循环5次,外循环1次,内循环5次。...3、while循环与for循环的适用场景? while循环 当对循环次数未知的时候,使用while循环再合适不过。

1.7K20

计算机小白的成长历程——分支与循环(3)

循环语句分三类:while语句、for语句、do……while语句。今天我们要探讨的是第一种while语句。...那废话不多说,我们一起来看看运行结果: 这个结果跟大家推测的结果有出入吗?为什么会是这个结果呢?...不是吧,它并没有像我想象的那样继续执行循环内的语句,反而跳过后面的语句直接进入判定了,这样a的值永远不会发生变化,难怪刚才的结果是程序并未结束,那如果我把a++移动到if语句前,结果又会发生什么样的变化呢...,continue后面的代码不会执行,或者说是跳过后面的执行语句,直接回到判定部分,进行下一次循环的入口判断。...,跳过本次循环,回到while条件判断,这个意思是不是输入字符0~9外的其它字符都无法打印,只能打印0~9的字符,下面我们就来验证一下: 这里我们可以看到除了0~9的字符外,输入其它的字符都无法打印,

9920

「基础编程学习」 「PHP7数组详解」:第1章 (6)循环结构

# 1.11 循环结构 循环这个太常用了。我们为什么使用计算机,而不是手动一个一个处理,就是因为计算机善于处理循环的结构。把最枯燥的部分,扔给机器,它喜欢这样。 循环的应用场景,很多。...for语句内位置参数,第一个是循环因子的初始值,第二个是跳出循环的判断条件,第三个是运行式。...为了说明效果,HTML和PHP混合写了,大家知道这个运行机制就可以了,这不是最佳实践。 注意样式是使用的bs。...3 - while循环 while循环用的也应该算是最低的,为什么?一不留神,死循环!会一直到PHP的timeout时间30秒。这是不允许出现的。 还是通过代码认识一下其结构。 ?...有时候为了写一个命令行运行的文件,要守护进程,永远不过期,永远不退出,那可能就需要一个死循环,用云运行下去。下面的代码看一下: ? 大家看,这就是一个while(true)典型的死循环为什么这么用?

70220

【C语言简单说】十五:while循环

上一节说了for循环,那么我们说一下while循环;其实都是循环,就好比肯德基和徳啃鸡一样,卖的都是鸡~ ㄟ(▔^▔ㄟ) (╯▔^▔)╯ 上代码: #include #include<...意思就是说我们规定了这个东西叫做鸡,你就不能叫鸡叫做 又鸟 ; 好了,我们写了一个while之后,我们while之后的圆括号之中就是我们需要填写的条件,我们在这里填写的是i<10的时候就执行循环。...我们看代码,我们while循环后面的花括号内的内容就是我们要循环的代码;我们的代码是:printf(“你是飞机\n”); 和 i++;为什么这里要写i++呢?...那是因为在这里while不会帮我们自动跳出循环,在这里i++就会每次循环的时候加上1,一直加到i<10这个条件不满足,那么这个循环也就停止了。好了我们运行下看看结果: ? 这个懂了吧=。=。。...其实循环很简单的,我们下一节还介绍一个循环叫做do…while循环,也是超级简单的。 (▔^▔)/ ↖(▔^▔)↗ ㄟ(▔,▔)ㄏ 持续更新…

64310

想学清楚循环 先搞定这个小学题目吧

看不懂,不会做,不明白,居然是个小学题目,各种受到1万点伤害啊。后来有大神发帖解答,才让众网友满血复活。其实这个题目的本质就是找规律。...for 循环 废话不多,先上图,左边是for循环,右边是while循环 ? 2种循环的对比 左边的for循环,是计算从0加到100最后的值,右边是while循环,从0打印到100。...要素都一样,所以说我们在大部分情况是可以使用for循环替代while循环的。 再来看我标注出来的表达式1 :初始化条件,2:循环条件,3:循环体,4:迭代条件,为什么要标注一个1,2,3,4?...这是第一次循环的顺序,第二次就不一样了,直接2,3,4跳过了1,为什么?因为初始化条件只需要运行一次,如果再次运行,i 又会变成0,第一次的 i++运算白做了,结果也会错误。...而如果两个路飞在不同的班级,老师随便怎么喊都不会有问题。

50630

《零基础看得懂的C++入门教程 》——(5) 容我套个娃 循环

循环可以通过默认判断条件跳出,也可以自己编写控制语句实现循环的跳出或忽略。 2.1 了解while循环的使用方法 为什么需要循环循环有什么作用?循环就是重复执行某一段代码。...这个变量i是循环的控制变量,意思则是控制循环控制多少次;我们接着往下看,while循环的关键字。...while循环后是一个圆括号,圆括号中需要添加的是条件,也就是一个表达式,在这里填写的是i<10,表示该循环需要循环10次,为什么要写这个i<10我们接着往下看;在圆括号后,我们使用了一堆花括号,在花括号内编写我们需要循环的代码...,将不会往下执行,直接忽略,开始下一次循环。...运行结果如下: ? 这个时候5已经消失不见了,因为当i等于5时忽略了这一次循环, 如果想等于5的时候就直接跳出循环可以使用break跳出循环

82910

《看聊天记录都学不会Python到游戏实战?太菜了吧》(10)无底洞的循环

小C:那你运行一下看看是否正确。 小媛:啊!为什么会这样? 小C:那是因为我们在进行输入时使用 input 接收的值都是字符串,我问你字符串的 5 与数字 5 在 python 中会相等吗?...小媛:你是指那个 while 就是循环的意思吗? 小C:挺聪明的呀,竟然一看就知道是 while循环的意思了。 小媛:我又不傻,就多了一个 while 和一个 True 我就随便猜一个。...小C:哈哈哈,一般情况下 while 后面需要跟一个 条件,这个条件就是指这个循环要满足什么条件才会执行。 小媛:那这个 True 是条件吗?...小媛:你之前在 if 语句那里说过层级,那么在这个 while 循环中,也是一样的形式;循环的代码前面也要使用相同的空格对这些代码指令进行标记,作为这个 while 需要循环的代码?...小C:是这个意思,在这里是循环 10 次,因为 i<10,每次都显示你好,并且每次 i 变量都会加一次 1,这样这个 while 循环的条件 i<10 总有一次会不满足,条件不满足时则跳出这个 while

52930

一个困扰我122天的技术问题,我好像知道答案了。

来,你说这个程序会不会正常结束? ? 但凡是对 Java 并发编程有一定基础的朋友都能看出来,这个程序是一个死循环。...看看会不会被打脸。 第二次程序改造 先接着看下面的程序: ? 这次的变动点是在 while 循环里面加了一个 100ms 的睡眠。 来,你再猜一下。这个程序还是不是死循环呢?...你觉得这个程序会怎么执行呢? 书里面说:也许你可能期望这个程序运行大概一秒钟左右,之后主线程将 stopRequested 设置为 true,致使后台线程的循环停止。...这个地方的 while 循环和上面的如出一辙。所以你知道为什么这个程序为什么不会正常结束了吗? 你不仅知道了,而且你还可以回答的比 volatile 更深入一点。...根据这个回答,我解释一下为什么我们的测试程序没有死循环

89010

【C语言】分支循环总结

答案都不是,输出结果为空  为什么会这样子呢?其实很简单——else的匹配:else是和它离的最近的if匹配的 所以,当程序运行到if(a==1)上时,判断为假,跳过if。...当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。...但是这个语句只会执行一次。 由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢? 这时候,我们就可以用到循环了!...2.continue 在 while 循环中的作用就是: continue 是用于终止本次循环的,也就是本次循环中 continue 后边的代码不会再执行, 而是直接跳转到 while 语句的判断部分...进行下一次循环的入口判断 for循环 我们已经知道了 while 循环,但是我们为什么还要一个 for 循环呢?

94430

【Python】循环遍历傻傻分不清

当直到我们完成这个工程或者是项目的时候,此时,我们就可以脱离这个项目当中,那么这就叫做是循环。 在程序当中如果需要重复执行某段代码的时候,就可以使用 while 语句。...print('*',end="Python") print('*') 运行结果:*Python* while 嵌套 循环嵌套实际上就是while里面还有while这种就被称之为是循环嵌套。...注意,在使用 while 循环时,一定要保证循环条件有变成假的时候,否则这个循环将成为一个死循环。...18 2.50 那么在这里杰斯下为什么for用于元组不适合↓ 使用的格式字符串拼接 printf 这个变量是不方便的。...注:如果for语句当中有break(退出循环)就不会执行else语句,还有一种情况就是死循环

9210
领券