C++:此插入表达式的作用以及作为函数参数传递时的工作方式

c++: what does this insertion expression do and how does it work when passing as a function argument?

本文关键字:函数 参数传递 方式 工作 插入 表达式 C++ 作用      更新时间:2023-10-16

binary(number >> 1)的含义是什么,它在下面的代码中是如何工作的?有人可以详细地向我解释一下吗?谢谢!

#include <iostream.h>
void binary(int);
int main() {
    int number = 3;
    cout << number << endl;
    binary(number);
}
void binary(int number) {
    if(number <= 1) {
        cout << number;
        return;
    }
    int remainder = number%2;
    binary(number >> 1);  //How does this work exactly?   
    cout << remainder;
}

<< and >>运算符是位移运算符;它们根据数字的二进制表示形式更改值;一个例子将阐明:

001010 (10)

如果我们执行<< 1(左移 1 位),则得到:

010100 (20)

如果你注意到了,以上相当于乘以 2;事实上,向左移动 n 位相当于乘以 2 得到第 n 次方!

如果我们对原始版本进行>> 1(右移 1 位),我们会得到这个:

000101 (5)

同样,如果你仔细观察,你会发现上面相当于除以 2!实际上,右移运算符是左移运算符的逆运算符,因此右移n位相当于除以2的n次方!

另外,void main()是完全错误的,所以不要使用它。 <iostream.h>应替换为<iostream>,因为前者是在标准 ISO C++之前使用的。