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 中一样,如果语句为真则返回 1,如果为假则返回 0?因为 C 语言没有布尔数据类型。
解决方案
该行返回0
或1
。运算符的结果<
是条件(逻辑上)为真时的值,或者条件为int
假时的值类型。1
int
0
对我来说,它似乎在返回一个布尔值,就像在 java 中一样,如果语句为真则返回 1,如果为假则返回 0?
是的。
因为 C 语言没有布尔数据类型。
为假 - C 语言具有_Bool
数据类型。尽管如此,运算符<
返回一个int
,而不是一个_Bool
。
推荐阅读
- dji-sdk - 带有 DJI 助手 2 模拟器的 OSDK 应用程序
- java - 初始化启动层java.lang.module.ResolutionException时出错:模块A包含包B,模块B将包B导出到A
- python - 将 blob 图像从 sqlite db 插入 QPixMap 到 PyQt5 中的 QTextBrowser
- c# - 如何让.Net等待来自网络服务的第二次响应
- installation - 在 Asterisk 1.6 中使用 Freeswitch 模块
- php - “连接到服务器失败。请稍后再试”从同一服务器上的 2 个域连接数据库时出现错误
- ruby-on-rails - 理解 GraphQL 中的“上下文”——Ruby on Rails
- webpack - 将自定义观察程序添加到 webpack 配置是一个好主意吗?
- python - Beam:Metrics.counter 未能创建计数器
- regex - Jenkinsfile - 使用换行符从 shell 脚本创建输出