程序里面常用的运算符我也给自己总结一下,因为脑袋里感觉有那么一些东西,但很凌乱
+ - * >= <= !=(不等于) ==(等于) 不必说,和数学中的一样
=赋值 例: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原创 如有建议 请留言)