在循环终止条件的判断中,不同类型变量的比较操作是容易造成死循环错误的地方,同时也是开发人员容易忽视的地方,值得测试人员多加留意。下面两个例子是该类错误的两种典型情况:
【例三】file02文件中某函数中如下代码,可能造成死循环:
......
int i;
WORD *pCheck =(WORD*)p;
WORD wCheckSum=*pCheck;
pCheck++;
for(i=1;i<dwLen/2;i++)
{
wCheckSum^=(*pCheck);
pCheck++;
}
//binlen had already word alignment
return (wCheckSum);
......
该段代码是在DOS环境下用BC编译的,由于循环变量i是int型(2个字节),而dwLen是DWORD型(4个字节),如果dwLen大于65536,那么该函数就是死循环了。
上面的例子是不同类型变量之间直接比较操作,还有一种情况是函数的返回值与另一不同类型的变量比较,见下面例子: