【发布时间】:2015-07-25 04:57:24
【问题描述】:
我是 C 初学者并检查此代码
int is_finished()
{
int counter = 0;
sem_wait(&global_mutex);
counter = NotEatenCount;
sem_post(&global_mutex);
return counter==0;
}
函数应该返回一个整数。 return counter==0 在这里是什么意思?它看起来像:
if(counter==0){
return true;
}
else{
return false;
}
【问题讨论】:
-
函数只能返回int,所以
counter==0的评估无关紧要。 (它是布尔值(转换为 0 或 1 个整数),因为 c89,IIRC) -
对于条件评估效果,任何非零值都将被视为真,因此安全的做法是在任何情况下都与
0而不是1进行比较,或者只使用表达式作为真值。
标签: c