符号笔记本索引
- 这是一本笔记本,里面记着之前不曾遇到过的一些东西~
1. 符号:>>
1) 右移运算符
在许多计算机编程语言(例如:C语言、C++语言、Java语言、JavaScript语言、Pascal语言等)中,“>>”代表右移运算符,就相当于“shr”。该运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向右移动指定的位数,移动到右边界之外的多余二进制位会被丢弃,并从左边界移入一个二进制位,若原数的最高位为1,则移入的二进制位为1,否则为0。
右移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。
- 应用举例:
问:计算表达式14 >> 2的值。
答:表达式14 >> 2的值为3,因为14(即二进制的00001110)向右移两位等于3(即二进制的00000011)。
(说白了,就是把要移动的数转换成2进制,右移几位就去掉右边的几位数,左移几位就在右边加几个0,比如14右移2位就是转成二进制变成1110,去掉右边的10,变成11,11转成十进制就是3;左移2位就是111000,转成十进制就是56。)
2) 输入操作符
在C++里面我们把>>当作输入操作符,它是stream这个类里一个重要的运算符。
- 关于steam:在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符,其中之一为析取器(>>)。
- 析取器(>>)
作用:从流中输入数据。
比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个 指定类型 (即变量x的类型)的数据。从左操作数指定的输入流读入数据到右操作数:cin >> i 把标准输入流中的下一个值读入到i中。
不同的方式 | 语句 |
---|---|
用函数 | scanf("%d%d%d",&a,&b,&c);(假设为短整型) |
用操作符 | cin>>a>>b>>c; |
【C++追求的就是简洁~】
3.) 转换运算符
-
字符是可使用多种不同字符方案或代码页来表示的抽象实体。
例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字节序列。公共语言运行库使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)表示字符。 -
举例: a r r a y [ 0 ] = ( array[0] = ( array[0]=(str >> 16 & 0xff);
表示把字符串$str转换为Unicode 16位的编码,然后存储到数组中。常见的UTF-8编码方式就是把例子中的16改成了8,表示Unicode编码,16位字符。
整理自>>_百度百科
2. 符号 ? :
这个符号之前在上C语言程序设计的时候学到过,但是因为自己平时用的不多,所以有时候看到这个符号会感到迷茫,特此记录。
- 唯一的一个三目运算符
例子
直接上例子
int y = x>10 ? 1 : 0;
‘?’ 之前的表达式若为真,则返回1;反之,返回0;
推而广之,可写为
(逻辑条件)?(条件成立时的值):(条件不成立时的值) |
---|
C语言运算符号_百度百科
拓展:里面有关于种类、优先级、C语言的发展以及相关概念。
3. 符号 <<
1) 逻辑左移
拓展
运算符 | 含义 | 描述 |
---|---|---|
<< | 左移 | 用来将一个数的各二进制位全部左移N位,高位舍弃,低位补0。 |
>> | 右移 | 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。 |
& | 按位与 | 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。 |
l | 按位或 | 两个相应的二进制位中只要有一个为1,该位的结果值为1,否则为0。 |
2) cout << c
cout 是 c++语言中的标准函数库提供的IO机制,即输入输出机制。
是一个输出流用来输出数据,需要添加
#include < iostream >
using namespace std;
cout << c 的意思即为输出c的值。
4. 变量类型 bool
布尔型变量bool
- 布尔型变量的值只有 真 (true) 和假 (false)。
- 布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。
bool
可用于定义函数类型为布尔型,函数里可以有return TRUE;
return FALSE
之类的语句。
下面是我遇到bool
的场景:
int find(int* nums, int numsSize);
bool find132pattern(int* nums, int numsSize){
return find(nums, numsSize);
}