为什么uint会中断我的for循环?

popClingwrap

这不是一个真正的问题,因为修复很简单,而且成本很低。我猜这是我不了解的某种特性,for或者uint我只是想知道发生了什么...

使用ActionScript 3,我建立了一个for循环,以向后遍历的元素Vector

var limit:uint = myVector.length-1;
for(var a:uint = limit; a >= 0; a--)
{
    trace(a);
}

当我运行此代码时,它会2, 1, 0按预期输出,然后继续执行4294967295并从那里开始递减计数,直到循环超时并抛出一个Error #1502

解决方法是简单地键入a作为int,而不是uint,但我不知道为什么。当然,我正在处理0或更大的值,所以uint正确的数据类型正确吗?

我想这4294967295是的最大值,uint但是我的计数如何到达那里?

如果你这样做

var myUint:uint = 0;
trace(myUint - 1);

那么输出是-1为什么,为什么在我的循环中我应该突然跳回至4294967295

抱歉,您的问题有些杂乱无章,并为您的任何帮助而欢呼。

pedro_sland

你近了。如您所说,您的循环为您提供2、1、0、4294967295。这是因为uint不能为负。您的循环将始终运行一段时间,a >= 0并且因为它永远不会为-1来打破循环条件,所以它将永远循环下去。

var myUint:uint = 0;
trace(myUint - 1);

我没有对此进行测试,但是可能发生的是myUint被转换为一个int,然后减去了1。下面的代码应该能够确认这一点。

var myUint:uint = 0;
trace((myUint - 1) is uint);
trace((myUint - 1) is int);

要修复循环,可以使用int,也可以在for each(var x:Type in myVector)不需要索引(a)的情况下使用循环

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在for循环的setTimeout中放置警报会中断警报?

为什么在遍历多维数组时for循环会中断?

为什么ADB命令会中断bash脚本循环?

为什么即使条件为真,这个循环也会中断?

为什么Json解析会中断While循环?

为什么do while循环不会中断?

为什么我的python脚本在编译后会中断?

为什么多处理Julia会中断我的模块导入?

为什么我的程序会中断?为什么我收到这个错误?

shared_ptr-为什么会中断?

为什么这小段JavaScript会中断?

为什么即使不满足条件,循环也会中断并出现错误?

为什么我的 Rails 应用程序中的字母顺序会中断?

为什么互相调用更快时,我的下载队列会中断?

当我仅将“ translatesAutoresizingMaskIntoConstraints”设置为true,ChangeSizesInRunTime时,为什么约束会中断?

ProjectEuler#3:为什么它告诉我该划分即使在没有中断的情况下也会中断?

为什么此循环会中途终止?

为什么我的for循环会生成中断的函数?

为什么中断顺序不能停止我的代码中的循环?

为什么我的递减 while 循环中断?

为什么带有空字符串的数组上的array_shift会中断循环?

为什么在我的笔记本电脑由于不活动而关闭屏幕后我的 UI 会中断?

为什么我的项目在移动我用 CMake 制作的单元测试项目时会中断并且无法编译

为什么将参数化后查询会中断?

为什么MatLab会中断某些变量输入?

为什么设置optionsValue会中断Knockout更新?

为什么functools.lru_cache会中断此功能?

为什么添加材质模块会中断动态组件插入?

为什么命名空间使用会中断MinGW编译?