c++运算符和表达式

目录

运算符和表达式

(1)赋值运算符和表达式

(2)算数运算符和表达式

(3)比较运算符

(4)逻辑运算符和逻辑表达式

(5)++/--运算符和表达式

(6)位运算符和位表达式


运算符和表达式

[1]赋值运算符和表达式

基本的赋值运算符:=

复合赋值运算符:+=,-=,*=,/=,%=,>>=,<<=,&=,^=,|=。

具体说明见下表

运算符实例等价于
=n = 20n 等于20
+=n += 20n = n + 20
-=n -= 20n = n - 20
*=n *= 20

n = n * 20

/=n /= 20n = n / 20
%=n %= 20n = n % 20
&=n &= 0xF2F2n = n & 0xF2F2
|=n |= 0xF2F2n = n | 0xF2F2
^=n ^= 0xF2F2n = n^0xF2F2
<<=n <<= 4

n = n << 4

(n << 4代表将n左移4位)

>>=n >>= 4n = n >> 4

我们可以看下面的实例,定义变量x,y并分别对其进行赋值

int main(void){
    int x = 0;                         //为变量x赋值为0
    int y = 0;                         //为变量y赋值为0
    cout << "请输入两个正整数:";        
    cin >> x >> y;                     //获取xy的值
    cout << (x += y) << endl;   
    cout << (x *= y) << endl;
    cout << (x %= y) << endl;
    cout << (x <<= y) << endl;
    cout << (x = y = 100) << endl;
    return 0;
}

结果如下: 

[2]算数运算符和表达式

在c++语言中,我们可以使用7个算数运算符,它们包括'+(正)','-(负)','+','-','*','/'和'%'

其中,加法(+),减法(-),乘法(*)运算符与我们在数学中所学习的大差不差

但除法运算符(/)对于两侧的值进行的是整除运算,对于小数部分直接切除,类似与1/2的结果为0。

'%'这个运算符对于大家来说可能很陌生,它叫做取余运算符,两个操作数必须是整数,它的功能是求余——在小学数学不考虑小数的时候我们可能会求出余数,这个运算符的作用就是获取余数。

[3]比较运算符

比较运算符的功能是对程序内的数据进行比较并返回bool类型的比较结果,具体说明表如下

运算符说明
 m == n如果m 等于n就返回true,反之返回false
 m != n如果m 不等于n就返回true,反之返回false
 m < n如果m 小于n就返回true,反之返回false
 m > n如果m 大于n就返回true,反之返回false
 m <= n如果m 小于等于n就返回true,反之返回false
 m >= n如果m 大于等于n就返回true,反之返回false

[4]逻辑运算符和逻辑表达式

c++语言为我们提供了三个逻辑运算符——'!','&&','||'。

(1)逻辑非(!):单目运算符,功能是对操作数进行取反操作,当操作数为逻辑真时,运算后结果为逻辑假,若操作数为逻辑假,运算后结果为逻辑真。

(2)逻辑与(&&)和逻辑或(||):双目运算符。当两个操作数都是逻辑真时,"&&"运算后结果为逻辑真,否则为逻辑假(0);当两个操作数都是逻辑假时,"||"运算后的结果才为逻辑假,否则为逻辑真(1)。可以概括为:"对于逻辑与,同真则真;对于逻辑或,同假则假。"

例如下面这段代码

!(3 < 0);            //结果为1
4 > 3 && 3 > 0;      //结果为1
4 > 0 || 3 < 0;      //结果为1

[5]++/--运算符和表达式

自加(++)、自减(--)运算符是c和c++语言中十分重要的运算符,它们属于单目运算符,运算符"++"和"--"均为整体中间不能用空格键隔开,自加运算能时操作数按其类型加一个单位,自减运算则是让操作数减一个单位。

自加与自减运算符既可以放在操作数的左侧,也可以在操作数的右边,但前缀表达式和后缀表达式的区别在于运算的先后顺序,前缀运算是先为操作数进行自加或自减操作,然后将其用于整个表达式,后缀运算则是先以初始值进行整体操作,操作完成后再进行自加或自减操作,详见如下代码。

int main(void){
    int a = 10,b = 11,c = 9,d = 12;
    cout << ++a << endl;    //先使c减一再输出其改变后的值
    cout << b++ << endl;    //先输出b的值然后使其加一
    cout << --c << endl;    //先使c减一再输出其改变后的值
    cout << d++ << endl;    //先输出d的值然后使其减一
    //最后看现在abcd的值
    cout << a << b << c << d << endl;
    return 0;
}

从结果我们可以明显的看到运算的顺序,也能对前缀和后缀的不同有清晰的感受。

[6]位运算符和位表达式

运算符名字实例
~取反~\011得到结果\366
&逐位与'\011' & '\027'得到结果\001 
|逐位或'\011' | '\027'得到结果、037
^逐位异或'\011' ^ '\027'得到结果\036
<<逐位左移'\011' << 2得到结果\044
>>逐位右移'\011' >> 2得到结果\002

位运算符在c++中的操作要求是操作数必须是整型数并按照二进制位的顺序来处理它们,

位运算符有两种,逻辑位运算符和移位位运算符。

逻辑位运算符:包括~,&,^,|,具体说明如下:

(1)单目运算符~(按位求反)会将二进制位由1变为0或由0变为1

(2) 双目逻辑运算符&(按位与)、1(按位或)、^(按位异或)。其中优先级&高于^,而^高于。
① 按位逻辑非(~):是对一个整数逃行逐位取反运算。若二进制位为0,则取反后为1;反之,若二进制位为1,则取反后为0。
② 按位逻辑与(&):是对两个整数逐位进行比较。若对应位都为1,则与运算后为1,否则为0。
③ 按位逻辑或(1):是对两个整数逐位进行比较。若对应位都为0,则或运算后为0,否则为1。
④ 按位逻辑异或(^):是对两个整数逐位进行比较。若对应位不相同,则异或运算后为1, 否则为0

移位运算符:包括<< 和 >>它们是双目运算符

移位运算符包括<<、>>,它们是双目运算符,使用的格式如下。
运算符“<<”的功能是将操作数 operation1 向左移动n个二进制位,“>>”运算符是将操作数operation2 向右移动m 个二进制位。移位运算符并不改变 operationl 和 operation2 本身的值。例如:

 

Short int operationl = 0x8, n=3;
Short int a= operationl < n //操作数左移n个二进制位后,右边移出的空位用0补齐
Short int operation2 = 0xa5, m=3;
Short int b = operation2 >> m; //结果为14H


操作数右移m个二进制位后,左边移出的空位用0或符号位补齐,这与机器系统有关。位运算符的运算优先级为(括弧中运算符的优先级相同)如下。
~高于(<<、>>)高于&高于^高于1。

其他种类的运算符例如求字节运算符等我就不给大家细讲了,文中若有错误请评论指出,感谢大家的观看。

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值