在 C++ 中用 << 声明一个 int

Declaring an int in C++ with <<

谁能给我解释一下这个声明在 C++ 中的含义;我从未见过这样声明的东西,只是对它的含义和工作原理感到困惑:

int ix((dx > 0) - (dx < 0));

与此声明相同:

int error(dy - (dx >> 1));

默认情况下,当您在 C++ 中编写类似 int var;int var = int(); 的内容时,var 的值在第一种情况下将未初始化,而在第二种情况下将设置为零.

您的示例的行与:

int ix = (dx > 0) - (dx < 0);
int error = dy - (dx >> 1);

此外, dx > 0dx < 0 是 0 或 1,并且 dx >> 1dx 除以 2。

行中:int ix((dx > 0) - (dx < 0));

  • ix = 1 如果 dx > 0
  • ix = 0 如果 dx = 0
  • ix = -1 如果 dx < 0

您可以使用圆括号或大括号中的初始值设定项来声明标量对象。

在此声明中

int ix((dx > 0) - (dx < 0));

使用表达式 (dx > 0) - (dx < 0) 作为初始值设定项。

如果 dx 大于 0,则子表达式 (dx > 0) 的计算结果为布尔值真,而此子表达式 (dx < 0) 的计算结果为布尔值 false。结果,表达式为 true - false,其中布尔值隐式转换为 1 表示真,0 表示假。因此,如果 dx 大于 0.

,您将得到 1

如果 dx 小于 0,您将得到 -1

如果 dx 等于 0 那么两个子表达式的计算结果都是假的,你会得到 0.

因此变量 ix 被初始化为 1 或 0 或 -1 取决于 dx 是大于等于还是小于 0。

在此声明中

int error(dy - (dx >> 1));

使用按位右移运算符 dx >> 1 将变量 dx 的位右移一位。它等效于表达式 dx / 2.

例如,如果 dx 等于 6 那么它的二进制表示是(为简单起见,我将只使用一个字节)

0000 0110

右移一位你会得到

0000 0011

这是3的二进制表示。

很难说为什么要在这个声明中使用这个初始化器

int error(dy - (dx >> 1));

不知道它的使用上下文。