C++基础之常用运算符

程序里面常用的运算符我也给自己总结一下,因为脑袋里感觉有那么一些东西,但很凌乱

+ - *  >= <= !=(不等于) ==(等于) 不必说,和数学中的一样

=赋值     例:int a = 5;(a赋值为5)

/除 例:5/3得1 (被除数符合一个除数加1)

%求余 例:5%3得2(被除数符合除数后剩余的)

++ 自加 (++写在前面是先自加后运算,写在后面是先运算后++)

--自减 (同上,但++或者--是处在“同一时空”的,怎么理解同一时空的下面介绍)

!非 例:int a = 5;int b = !a;(b得0,不是0的非为0,是0的非为1)

&&逻辑与 例:if((a>0)&&(b>0))(可以理解为“都”,如果a和b都是大于0的,if条件成立)

||逻辑或 例:if((a>0)||(b>0))(传统意义上的或,a和b只要有一个大于0的,if条件成立)

------------严容灵朋友给我提示的,先出现的问题的判断写在||左边有提高效率功能———

~按位取反 例:int a=1; int b = ~a; (b得-2,a的1是四个字节32位,为000……001,取反得111……110,这个就是-2,需要有一些进制转换的知识)

<<(按位)左移 例:int a =5<<2;(得a为14,5是000……0101,按位左移两位,后边补0,000……01 0100为14,前面舍弃两个0,后面补了两个0)

>>(按位)右移 (同上,也是补0,14>>2为1了,后面舍弃两个0,前面补了两个0)

&按位与 例:int a = 5&3;(5按32位是00……0101,3按位是00……0011,末尾都为1才为1,为00……01为1……同1位1,不同为0)

|按位或 例:(得7,5按32位是00……0101,3按位是00……0011,倒数1-3位都不同为1,为00……01为1……同0为0,不同为1)

^按位异或 例:5^3(得6,5为00……0101,3为00……0011,倒数第二位和第三位不同为1,那就是00……0110,位6---相同为1,不同为0)

> ? :三元运算符 例:int a = 5>3?5:3;(a得5.如果5>3为真取?后面的数,如果5<3为假取:后面的数)

理解自加自减“同一空间”的概念

题: int a = 1,b = 3; 

int c = (++a)-(a--)+(b++)+(--a);

思路:++a先运算,a为2,这时候a都为2了,不论是a--的a还是最后面--a的a,这就是同一空间概念,在运算--a为1,这时候a--的a为1,前面运算过的++a也为1,式子变为:1-(a--)+(b++)+1,此时a为1,就是1-1+3+1=5,c为4,这里有运算先后的问题,自加自减放在前面在运算之前就处理加减了,放在后面这个式子运算结束才处理,这时候中间的(a--)因为之前a为1了,再减,a为0,b本来为3,运算完++,b为4

总结完我也感觉到自己清晰多了,按位取反之前不知道有这个,& | ^经常混淆

(PanPen120原创 如有建议 请留言)




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值