发信人: IceFrog(冰蛙), 信区: MathTools
标 题: for i=1:-1:2是死循环么?
发信站: 饮水思源 (2012年07月26日03:18:42 星期四)

for i=1:-1:2
的意思很简单,就是从1开始,每次-1,直到i=2后退出
如果类似的语句出现在C中,肯定就是死循环了
不过matlab中对这个却做一些自动判断,你可以尝试代码
for i=1:-1:2
a=1;
end
运行的结果,是你无法在workspace中找到a
且i=[]是空矩阵
问题1:这不科学吗?
参考一个帖子中的回复
http://www.ilovematlab.cn/thread-201970-1-1.html
8楼说:
J:D:K is the same as [J, J+D, ..., J+m*D] where m = fix((K-J)/D).
J:D:K is empty if D == 0, if D > 0 and J > K, or if D < 0 and J < K.
所以对matlab而言,for i=1:-1:2相当于不执行循环!
问题2:这个信息有用么?
相当有用哦!一般人debug的时候,发现系统没有执行这个循环
你会想到的原因是什么?是不是脑袋空空如也?其实原因可能就是在这里~
另外就是,这个matlab与C明显区别的地方,会让很多由C入手的debuger产生错觉
不习惯,对,会很不习惯~
--

※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.36.4]