看windows 程序设计中遇到了这个问题,一搜csdn得出如下答案:
这里要把它强制类型转换为int是因为sizeof的结果是unsigned,所以如果出现
int d = -1;
if ( d < NUMLINES )
之类的代码,此处的if将为false,因为存在unsigned提升的问题,也就在出现int和unsigned int混合的情况下,int会被看成unsigned,所以此处d被看成了最大的无符号数,结果为false。
这是一个很狡猾的bug,但把NUMLINES强制转换为int就可以避免该问题。
来自网友的博客