gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:10:58 26 4
gpt4 key购买 nike

有人可以向我解释该声明在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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com