我有以下代码:
#define NUM_DAYS 65
#define NUM_PERSON 33
int num = 0;
if(NUM_DAYS % NUM_PERSON)
{
num = NUM_DAYS / NUM_PERSON;
}
else
{
uum = NUM_DAY / NUM_PERSON + 1;
}
num = num - 1;
while(num > 0)
{
//do something here
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了以下lint警告:
Warning 681: Loop is not entered
Run Code Online (Sandbox Code Playgroud)
问题是什么以及如何解决?
pat*_*cek 13
编写代码时,不会输入循环.NUM_DAYS % NUM_PERSON
将评估true
,所以num
将是平等的NUM_DAYS / NUM_PERSON
.由于我们处理的是int,65 / 33
等于1
.1 -1
是的0
,所以while条件会失败.
如果您的代码是按预期编写的(例如,那些常量是您希望始终使用的值),只需删除while循环即可.它永远不会被使用.但是,如果NUM_DAYS
或NUM_PERSON
以后可能包含其他值,则可能无需担心.如果这些特定值不重要,请尝试将它们设置为值,以便除法将评估为大于的值1
.
#define NUM_DAYS 65
#define NUM_PERSON 33
int num = 0;
if(NUM_DAYS % NUM_PERSON) // we go here, since (NUM_DAYS % NUM_PERSON) > 0
{
num = NUM_DAYS / NUM_PERSON; // so num = 1 now
}
else
{
uum = NUM_DAY / NUM_PERSON + 1;
}
num = num - 1; // num = 0 now
while(num > 0) // num = 0 ! So we don't go in this loop
{
//do something here
}
Run Code Online (Sandbox Code Playgroud)
这就是你得到这个警告的原因.编译器已确定您的循环无用(使用当前#define
值).