C++(六):运算符(下)

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号

一般地,运算符有六种:

  1. 算术运算符
  2. 逻辑运算符
  3. 赋值运算符
  4. 关系运算符
  5. 位运算符
  6. 其他运算符

这一章我们来看位运算符和其他运算符


 位运算符

位是用以描述电脑数据量的最小单位。二进制系统中,每个0或1就是一个位。

位运算符作用于位,将运算对象按二进制的方式操作,完成指定运算。

位运算符一般用于处理二进制位的问题,且只能用于操作整型数。


1)按位取反 ' ~ '

按位取反运算符 ~,又称补码运算符。

取反,顾名思义,类似反转的效果,如二进制上的位如果是 0,则取反后为1,而位上是1的取反后为0。

比如:

如果  A = 00010001

那么~A = 11101110


2)按位与 ' & '

规则:如果相应的二进制位都为1,则该位的结果就为1,否则为0(类似逻辑" 与 ")

比如:

     A = 1010
     B = 1100
A&B = 1000


3)按位或 ' | '

规则:如果相应的二进制位有一个为1,则该位的结果就为1(类似逻辑" 或 ")

比如

     A = 1010
     B = 1100
A | B = 1110

4)按位异或 ' ^ '

规则:如果相应的二进制位不同,则该位的数字就为1(即两位相同则为0)

比如:

     A = 1010
     B = 1100
A ^ B = 0110

5)左移' << '

规则:将二进制码向左移动若干位,后面补0。(相当于乘以2)

比如:

       A = 0011
A << 1= 0110

6)右移' >> '

规则:将二进制码向右移动若干位,前面补0。(相当于除以2)

比如:

       A = 0011
A >> 1= 0001

其他运算符

符号

含义

作用

? :

条件运算符

可代替简单if-else语句

逗号运算符

为了把几个表达式放在一起

. 和 ->

成员运算符

用于引用类、结构和共用体的成员

& 和 *

指针运算符

前者返回地址,后者指向一个变量

1)条件运算符

int value;
if (test > 1)
{
    value = 5;
}
else
{
    value = -5;
}

上述代码可化为下列代码:

int value=(test>1) ? 5 :-5;

 条件运算符属于三目运算符(或叫三元运算符),因为它需要三个操作数

A ? B : C

若表达式A为真,则整条表达式的值为B

若表达式A为假,则整条表达式的值为C


2)逗号运算符

整条逗号表达式的值为最后一条表达式的值

我们使用逗号让一系列运算按顺序执行

int main ()
{
int a,b; 
a = 5;//初始化a 
b = (a+10,a+5);//初始化b 
cout<<"a = "
	<<a
	<<",b = "
	<<b;
return 0;
}

结果为:

a = 5,b = 10

我们由结果可知,最右边的表达式将作为整条逗号表达式的值,其他表达式的值会被丢弃。

如上述代码中,只有a+5有效,而a+10被丢弃(或者说被覆盖了)


3)成员运算符

成员运算符包括点运算符" . "和箭头运算符"->"

成员运算符用于访问结构体,类和共同体的成员

点运算符可直接应用于对象

箭头运算符可与指向对象的指针一起使用

比如,现在有一个结构体

struct people
{
  char name[10];
  int age;
}man;

将值"yiyi"赋给对象man的name成员

可以这么做:

strcpy(man.name,"yi");

若p_man是一个指针,指向类型为people的对象,则:

strcpy(p_man->name,"yi");

4)指针运算符

1、&指针运算符可返回变量的内存地址。

例如:

int i = 1;
cout << &i;

输出结果为一个地址:

0x6ffe1c

2、 *指针运算符返回操作数所指定地址的变量的值

例如:
C++(六):运算符(下)

 输出结果为:

a = 20
p_a = 012FFC10
b = 20

在最后,我们来梳理一遍

C++(六):运算符(下)

上一篇:DVWA-XSS(Stored)


下一篇:Linux指令英文全称(方便记忆)