在 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 > 0
和 dx < 0
是 0 或 1,并且 dx >> 1
将 dx
除以 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));
不知道它的使用上下文。
谁能给我解释一下这个声明在 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 > 0
和 dx < 0
是 0 或 1,并且 dx >> 1
将 dx
除以 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
.
如果 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));
不知道它的使用上下文。