gpt4 book ai didi

c - 为什么在 stdbool.h 中使用整数而不是无符号整数?

转载 作者:行者123 更新时间:2023-12-05 01:37:26 25 4
gpt4 key购买 nike

stdbool.h 中,truefalse 只是整数。为什么不签名?有绩效动机吗?

最佳答案

使用类型 int对于值 falsetrue使他们同意由逻辑否定运算符(!)、关系运算符(<><=>=)、相等运算符(==)产生的类型和值集, != )、逻辑 AND 运算符 ( && ) 和逻辑 OR 运算符 ( || ),所有这些都产生 int 类型的值 0 或 1 .

另外,如果 true被定义为 1u ,然后 int minust = -true;将初始化 minust为实现定义的值(或引发实现定义的信号),而不是初始化 minust到值 -1 .编译器可能会发出警告。这是因为 1uunsigned int 类型, -1u值为 UINT_MAX , 和 UINT_MAX不能用 int 表示.

我意识到 -true论据有点弱。我想要表达的观点是定义 falsetrue常量为 unsigned int 类型,而不是纯数值 0 和 1 的类型(即 int ),将对您可以对这些常量执行的操作施加限制(在我看来,这是无根据的限制)。

关于c - 为什么在 stdbool.h 中使用整数而不是无符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58622239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com