我有一个与调度相关的任务,其中我需要修改Linux源代码。我遇到了一段我不懂的代码。
static inline int entity_before(struct sched_entity *a, struct sched_entity *b) {
return (s64)(a->vruntime - b->vruntime) < 0;
}
这条线路return (s64)(a->vruntime - b->vruntime) < 0;
返回什么?对我来说,它似乎返回了一个布尔值,就像在Java中一样,如果语句为true,则返回1,如果为false,则返回0?因为C语言没有布尔数据类型。
该行返回0
或1
。如果条件(逻辑上(为真,则运算符<
的结果是1
的int
值,如果条件为假,则结果是值0
的int
类型。
对我来说,它似乎返回了一个布尔值,就像在java中一样,如果语句为true,则返回1,如果为false,则返回0?
是。
因为C语言没有布尔数据类型。
为false-C语言具有_Bool
数据类型。尽管如此,运算符<
返回int
,而不是返回_Bool
。
参见cpprreference比较运算符