永发信息网

在C和LUA中如何检查死循环,可以使用FOR循环吗?如何使用?谢谢~

答案:3  悬赏:30  手机版
解决时间 2021-03-02 06:04
在C和LUA中如何检查死循环,可以使用FOR循环吗?如何使用?谢谢~
最佳答案
for 循环在C中可能存在死循环
在lua里for不会存在死循环 你可以写一个例子
for i = 1,5 do
print(i)
end
会输出1 2 3 4 5
但是
for i = 1,-1 do
print(i)
end
就不会输出
这是一般型的for
如果是泛型for会有可能存在死循环
要检查死循环只能自己判断 比如做个计数器 循环大于10万次 则退出循环 并且抛出错误

local count = 0
while true do
dosomething()
count = count + 1
if count > 100000 then
error("无法退出的死循环")
end
另:不推荐楼上的方法 因为lua本身的设计就是不支持多线程的
end
全部回答
应该不可以。因为死循环自己是检测不出来的。除非是在独立线程中,然后有主线程检查,但是如果主线程死循环,就无法检测了。一般操作系统也是根据一个程序占用太多cpu时间来判断的。
你问的这个问题有点像“停机问题”
--[[Lua的话,for有3个参数:起始值、终止值、步进。
举个例子:--]]
for i = 1,-1 do
print(i)
end
--不会输出
for i = 1,-1,-1 do
print(i)
end
-->1
-->0
-->-1
--[[
只是做点补充。现在回答LZ死循环问题:
如果死循环的话,一般就是递归死循环和while死循环……至于r神马的一般不会用
while 布尔表达式 do
语句
end
所以只要检查一下布尔表达式【有木有可能】为false……如果不可能,那么就是死循环;
另一种例如function h() h() end不用管他,Lua该溢出时会溢出、
按检测时间来算,那就是
n=os.time()
循环体……
if os.time()-n>30 then break end
循环体……
--]]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
80多岁老人腰部疼痛,查无具体病因
数学怎么提高,如何突破瓶颈!!!
开通余额宝未转钱会扣费吗?
陕北排骨烩菜在什么地方啊,我要过去处理事情
matlab 中怎么将现有的矩阵扩大成已知矩阵,
最近一首男的唱的英文歌比较流行,有点嗨,歌
急救家庭严重问题!!!我爸帮堂姐找工作,并
男生篮球鞋怎么搭配衣服
现实生活中有些酒店时常设置“最低消费”,这
去湖南看快乐大本营怎么去啊
土耳其担保银行上海代表处在哪里啊,我有事要
亲子证明怎么开
Sony手机使用什么市场适合下载软件
25乘74加74乘74加74的等式计算
thisone will be that one
推荐资讯
宣化金盾出租车服务有限责任公司地址在什么地
上次世界杯冠军是哪国???
一万以下伏高压线电杆私人可以随便移动吗
氢碳氧氮等常见元素与人类的密切关系是什么
我是平刘海,刘海会乱,怎么办,一撮撮的,难
推莫日图地址有知道的么?有点事想过去
我要从福州坐高铁到合肥,是要从南站坐还是北
求教爱卡:邮局交电子眼违章罚款,是否车主本
日本菊正宗纯米大吟酿16度清酒720ml怎么样
既简单又好吃的家常菜
创新织布厂我想知道这个在什么地方
【感心动耳】...度宫中商.感心动耳绮丽难忘.
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?