相关疑难解决方法(0)

bool是原生C型吗?

我注意到Linux内核代码使用bool,但我认为bool是C++类型.bool是标准C扩展(例如,ISO C90)还是GCC扩展?

c gcc boolean linux-kernel

248
推荐指数
8
解决办法
31万
查看次数

为什么linux内核使用双逻辑否定而不是强制转换为bools?

鉴于这x是一个int以数字5作为其值的类型变量,请考虑以下语句:

int y = !!x;
Run Code Online (Sandbox Code Playgroud)

这就是我认为它发生的事情:x隐式地转换为a bool并且执行第一个否定,之后进行最后的否定,所以一个演员和两个否定.

我的问题是,不仅仅是使用bool(执行int y = (bool)x;代替int y = !!x)而不是使用双重否定,因为你正在执行两个否定.

我可能错了,因为我在Linux内核中看到了很多双重否定,但我不明白我的直觉出错了,也许你可以帮助我.

c casting negation

8
推荐指数
1
解决办法
390
查看次数

标签 统计

c ×2

boolean ×1

casting ×1

gcc ×1

linux-kernel ×1

negation ×1