有人可以向我解释该声明在C++中的含义吗?我从未见过这样的声明,只是对它的含义和作用感到困惑:
int ix((dx > 0) - (dx < 0));
此声明也是如此:
int error(dy - (dx >> 1));
最佳答案
您可以在括号或花括号中使用初始化程序声明标量对象。
在此声明中
int ix((dx > 0) - (dx < 0));
使用
(dx > 0) - (dx < 0)
表达式作为初始化程序。如果
dx
大于0,则子表达式(dx > 0)
的值为boolean true,而此子表达式(dx < 0)
的值为boolean false
。结果,表达式为true - false
,其中 bool(boolean) 值隐式转换为true(真)和0(假)。因此,如果dx
大于0
,您将得到1。如果
dx
小于0
,则将获得-1
。如果
dx
等于0
,则两个子表达式的计算结果均为false,您将获得0
。因此,根据
dx
是大于还是小于0,将变量ix初始化为1或0或-1。在此声明中
int error(dy - (dx >> 1));
使用按位右移运算符
dx >> 1
将变量dx
的位右移一个位置。它等效于表达式dx / 2
。例如,如果
dx
等于6,则其二进制表示为(为简单起见,我仅使用一个字节)0000 0110
向右移动一个位置,您将获得
0000 0011
那是3的二进制表示。
很难说为什么在此声明中使用此初始值设定项
int error(dy - (dx >> 1));
不知道使用它的上下文。
关于c++ - 在C++中用<<声明一个int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60234055/