简介: 最近在写 wranngle 的时候遇到了两个错误,挺难发现的,做个记录
houdini版本: 2020.5
错误一 死循环
今天下这些 for 循环的时候写了一个死循环,错误如下
for(int i=0; i<total; i+step+1)
{
}
我找了许久,为什么会有死循环,后来发现了,在 i 的递增上一般正常的 写 for 循环, i 最后都是写的 i++,我这里本来写的也是 i++,但是后来想加个 step 就是每次不加 1 而是加 4,然后直接修改了这里,所以造成了死循环,因为 i++ 是自加,会自动将结果赋值给 i,而不使用 i++ ,后 i 的值自然得不到更新了。
for(int i=0; i<total; i=i+step+1) // 这样 简单已处理就可以了
{
}
或者
for(int i=0; i<total;) // 这样 简单已处理就可以了
{
// …………
i=i+step+1;
}
错误二 数据精度
我做了一个功能,用来遍历一组 UV 点,用来找到 V 方向的最大值和最小值,然后存到point属性里,结果在后续的读取属性的时候 maxV 和 minV 都是0,校验过了,保存在 point 属性里的 maxV 是0.75, 但是我取出来的却是 0。
int maxV=point(0,"maxV",@ptnum);
int minV=point(0,"minV",@ptnum);
原因是 这里声明的 int maxV 是一个整数类型,所以 0.75 在这里被强转为 0 了,声明改为 float 就ok了
float maxV=point(0,"maxV",@ptnum);
float minV=point(0,"minV",@ptnum);