- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我们有一个 int
并希望以 boolean 方式在 0
和 1
之间切换它。我想到了以下几种可能:
int value = 0; // May as well be 1
value = value == 0 ? 1 : 0;
value = (value + 1) % 2;
value = !value; // I was curious if that would do...
!0
是 1
?_Bool
(或来自 stdbool.h 的 bool
)相同?如果不是,有什么区别?编辑:很多很棒的答案和很多有值(value)的信息,谢谢!很遗憾,我只能接受一个。
最佳答案
value = !value;
直接表达了你想做什么,它确实按照定义做了你想做的事情。
使用那个表达式。
来自 C99 6.5.3.3/5 “一元算术运算符”:
The result of the logical negation operator ! is 0 if the value of its operand compares unequal to 0, 1 if the value of its operand compares equal to 0. The result has type int. The expression !E is equivalent to (0==E).
关于c - 如何在 C 中切换 int/_Bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154073/
我用 C 语言编写了一组数据结构和函数,其中一些使用 _Bool 数据类型。当我开始时,项目将是纯 C。现在我正在研究使用基于 C++ 的 GUI 工具包,并将后端代码制作成库。 但是,在编译 C++
传统上,C 中的 boolean 值用 int 表示。或 char .新款_Bool type 使意图更清晰,但还有另一个有趣的功能:它似乎将浮点数转换为它,不会向零截断,而是与精确的零进行比较: #
如果 _Bool 类型的行为类似于整数并且不强制值是真/假或 1/0,例如: _Bool bools[] = {0,3,'c',0x17}; printf("%d", bools[2]); > 1 在
我试图编写一些宏以确保 _Bool 的类型安全使用,然后对我的代码进行压力测试。为了邪恶的测试目的,我想出了这个肮脏的黑客: _Bool b=0; *(unsigned char*)&b = 42;
C 标准将 _Bool 定义为包含 0 或 1 的无符号类型。如果 _Bool 类型的值 1 递增,据我所知,有两个选项: 该值在 1 到 0 之间环绕 该值增加到 2,它是非零值,因此在转换回 _B
下面的代码: _Bool field0; char field1; printf("fieldX: [%d]\t[%d]\n", field0, fiel
这个问题已经有答案了: Need for _Bool in C99? (4 个回答) 已关闭 9 年前。 至于stdbool.h ,我可以看到有些人想要 true 的常量和false和一个名为 boo
this 的答案关于 SO 的问题指定 _Bool 是在 C99 中引入的(特别是BobbyShaftoe 的回答)。 但是下面的代码可以与 gcc -std=c90 -pedantic test.c
我正在学习 C _Generic。这是问题:为什么我无法成功编译下面的代码?它只会将错误作为标题发出。 #include #define EVALUATE(X) _Generic((X), _Boo
使用 printf(),我可以将 %hhu 用于 unsigned char,将 %hi 用于 short int,%zu 用于 size_t,%tx 用于 ptrdiff_t 等. 我为 _Bool
我正在VS2013中编译以下代码, #if (__STDC_VERSION__ >= 199901L) /* Inactive pre-processor block */ #else /* Acti
#include #include #include int main(void) { _Bool = b1; printf("1 = Wahr, 0 = Unwahr\n"); b1 = ge
我正在读一本关于 C 的书。它说C99增加了一个数据类型_Bool。它基本上是一个 int 但只存储 0 或 1。现在我不明白为什么需要这样的数据类型。我们已经有了 bool,它隐含地转换为 int,
每当我需要 boolean 类型时,我都会被告知要么创建一个,要么使用 stdbool.h 更好。 由于 stdbool.h 使用 typedef bool _Bool,是否有理由使用 header
假设我们有一个 int 并希望以 boolean 方式在 0 和 1 之间切换它。我想到了以下几种可能: int value = 0; // May as well be 1 value = valu
为什么 C 使用单词 _Bool 来定义 bool 值?而他们使用单词 float 而不是 _Float? 此外,为什么必须包含 bool,为什么不是基本功能的一部分,例如 float? 最佳答案 _
这个问题在这里已经有了答案: Why does sscanf not work properly with a bool type (6 个答案) 关闭 9 年前。 我对我用 C 编写的这段代码有疑
错误 方法 -[EAzureBlobStorageFile configure:key:container:token:] 中存在未知参数类型“_Bool”。扩展 RCTConvert 以支持此类型。
从 C99 开始,C 现在有了一个合适的 boolean 类型,_Bool。 Objective-C 作为 C 的严格超集,继承了这一点,但是在 1980 年代创建时,没有 C boolean 类型,
我想到了 C 和 bool 我们使用 boolean 类型来声明对象,该对象只能保存 0 或 1 的值。例如: _Bool bin = 1; 或 bool bin = 1; (注:bool是stdbo
我是一名优秀的程序员,十分优秀!