C++ <<&燃气轮机&燃气轮机;循环中的运算符

C++ <<&燃气轮机&燃气轮机;循环中的运算符,c++,c++11,C++,C++11,我从未见过在这个循环中使用playing for(i=step << 1; i>=0;i-=2) { // normal Normal(angles[i>>1] } for(i=step=0;i-=2) { //正常的 法线(角度[i>>1] } i>右侧(2) 1) 通过rhs位左移lhs 2) 通过rhs位将lhs右移 对于内置操作员,lhs和 rhs必须同时具有整型或

我从未见过在这个循环中使用playing

for(i=step << 1; i>=0;i-=2)             
        {
         // normal
         Normal(angles[i>>1]

      }
for(i=step=0;i-=2)
{
//正常的
法线(角度[i>>1]
}

i><1
是一种愚蠢的编写
i/2
的方式,假设
i
是一种合适的整数类型

步骤这些是:

按位移位运算符按位移位运算符表达式 形式

左侧>右侧(2)

1) 通过rhs位左移lhs

2) 通过rhs位将lhs右移

对于内置操作员,lhs和 rhs必须同时具有整型或非作用域枚举类型。完整的 对两个操作数执行升级。返回类型是 整数提升后的左操作数的


它是左移和右移。这取决于
i
步骤的类型。如果它是一个数字基元,它就是一个位移位。如果它是一个类,就不可能回答这个问题。一般来说,我不会用“愚蠢”来形容它:
uint32\u t address=byte3@Aconcagua:例如,它确实在设置位运算时很有用,但在OP所呈现的情况下,这简直是疯了。我们甚至不清楚这个问题中是否在讨论数值。@ThomasSablik:的确如此。为了进一步深入兔子洞,人们很容易认为
i>>1
必须是整数,因为它被用作数组索引。但是,也许<>代码>角度是<代码> STD::vector < /Cuff>(它允许浮点类型传递到 []/Cord>这是与C++标准库获取一样丑陋),或者角度可能是一个类的实例,该类具有过载的<代码> []/COD>。在这个答案中,我力求简单,并使用“假设”和“适当”来掩盖复杂性。@Bathsheba
std::vector::operator[]
接受浮点类型对我来说是新事物。。。不幸的是,这里有一个隐式转换,所以这就是它工作的原因。。。