C++ <<&燃气轮机&燃气轮机;循环中的运算符
我从未见过在这个循环中使用playingC++ <<&燃气轮机&燃气轮机;循环中的运算符,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必须同时具有整型或
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>。在这个答案中,我力求简单,并使用“假设”和“适当”来掩盖复杂性。@Bathshebastd::vector::operator[]
接受浮点类型对我来说是新事物。。。不幸的是,这里有一个隐式转换,所以这就是它工作的原因。。。