当我运行以下代码时,如果最高数值等于255,有时会成功退出,有时会进入无限循环。我知道这是因为当255递增并变为0时发生翻转。发生了,但我想建议停止这种情况。我是否应该在末尾放置if语句以检查i是否等于最大数,然后在末尾中断?这似乎是不好的样式,如果我增加变量的大小,很容易忘记进行修复。
// delete all the files
for (unsigned char i = 0; i <= highestNum; i++){
rc = snprintf(formatString, sizeof(formatString), "x%u", i);
if (rc < 0){
perror("snprintf in delete");
}
rc = unlinkat(directoryFD, formatString, 0);
if (rc == 0){
printf("file unlinked\n");
}
}
UCHAR_MAX is equal to 255
)时,i递增后的下一个值将再次为0,并且您将获得无限循环。i
声明为int
,然后在使用它的循环中将其强制转换为char
。unsigned int
)来执行此操作,并且代码更改最少。另一种选择是使用different