ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-02-23 18:02:55  阅读:216  来源: 互联网

标签:int 取反 C++ 运算符 按位 表达式 man


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

一般地,运算符有六种:

  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、 *指针运算符返回操作数所指定地址的变量的值

例如:

 输出结果为:

a = 20
p_a = 012FFC10
b = 20

在最后,我们来梳理一遍

标签:int,取反,C++,运算符,按位,表达式,man
来源: https://blog.csdn.net/m0_62999278/article/details/123091154

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有