什么 !在值之前初始化变量时做

What ! do when initializing a variable before the value

我正在做一些随机的事情,我想出了 int a = !3;,当我输出它的值时,我期待一个错误,但它给了我一个 0

为什么会发生这种情况,! 在这个例子中意味着什么?

!3 是一个表达式,它的计算结果为 bool 类型。 在此示例中,它的计算结果为 false。

bool 可以转换为 int,这在您将其分配给一个时会自动发生。 false 的 int 表示是'0',而 true 是'1'。

即"negates"的值。 non-zero 变成 00 变成 1

!BOOLEAN NOT 运算符,即 !true == false!false == true。在 C 和 C++ 中,每个非零值在与布尔运算符一起使用时都被视为 true。而 false 在数值上是 0。所以 3 被视为 true!3 = !true = false = 0.