首页 > 解决方案 > 理解 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 中一样,如果语句为真则返回 1,如果为假则返回 0?因为 C 语言没有布尔数据类型。

标签: ccomparison-operators

解决方案


该行返回01。运算符的结果<是条件(逻辑上)为真时的值,或者条件为int假时的值类型。1int0

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

是的。

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

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

请参阅cppreference 比较运算符


推荐阅读