C++:此插入表达式的作用以及作为函数参数传递时的工作方式
c++: what does this insertion expression do and how does it work when passing as a function argument?
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++之前使用的。
相关文章:
- 如何在C++中将迭代器作为函数参数传递
- 为什么我不能将引用作为 std::async 的函数参数传递
- 节点插件 API 将数组作为函数参数传递
- 将字符串数组作为函数参数传递
- 如何通过 C++ 中的函数参数传递初始值设定项列表的固定大小的初始值设定项列表?
- 我可以动态创建新地图并作为函数参数传递吗?
- 将任意模板向量作为函数参数C++传递
- 将函数指针作为函数参数传递的目的
- C++:通过函数参数传递的值给出不同的结果
- 当数组大小在C++中未知时,如何在运行时将对字符串数组的引用作为函数参数传递?
- 通过宏将函数参数传递给函数
- C++:访问作为函数参数传递的双指针数组所指向的变量的值
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 将派生类构造函数参数传递给受保护的成员
- 将指向数组的指针作为函数参数传递,这本身就是另一个函数的返回值?
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 有什么理由C++ 11+ std::mutex 应该声明为全局变量,而不是作为函数参数传递到 std::thread 中
- 如何将派生类作为函数参数传递:如果派生类成员不在父类中怎么办
- 如何将变量作为构造函数参数或函数参数传递
- 当数组对象以函数参数传递时,为什么复制构造函数会自称