c-理解Linux源代码中的一个函数



我有一个与调度相关的任务,其中我需要修改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语言没有布尔数据类型。

该行返回01。如果条件(逻辑上(为真,则运算符<的结果是1int值,如果条件为假,则结果是值0int类型。

对我来说,它似乎返回了一个布尔值,就像在java中一样,如果语句为true,则返回1,如果为false,则返回0?

是。

因为C语言没有布尔数据类型。

为false-C语言具有_Bool数据类型。尽管如此,运算符<返回int而不是返回_Bool

参见cpprreference比较运算符

最新更新