操作符的秘密

一 :操作符

1.1:算术操作符
                           
+     -     *      /      %

注意:1.取%的两个操作数必须为整数类型。
           2.两个操作数中只要有一个为浮点型数据,则结果为浮点型。

1.2:移位操作符
      
左移位操作<<:内存中最左边的几位被丢弃,值最右边的几位用0补齐。


右移位操作>>:
(一)逻辑移位:内存中最右边的几位被丢弃,值最左边的几位用0补齐。
(二)算数移位:内存中最右边的几位被丢弃,值最左边的几位用符号位补齐。

注意:逻辑移位不常见,主要弄清算数移位,这里,我们也只讲到算数移位。


警告:所有无符号数执行的移位操作都是逻辑移位。

1 .3:位操作符

                    &      |         ^

&:按位与。将两个操作数的二进制位进行按位与,全1则1。(想得到某一位时用)
 |:按位或。将两个操作数的二进制位进行按位或,有1则1。(可将某一位变为1)
^:异或。将两个操作数的二进制位进行按位异或,相同为0,相异为1。(保证相异的结果)

注意:&   |   ^  三者都要求操作数为整数类型。


1.4:赋值

                    =

赋值操作符,用一个等号表示。赋值是表达式的一种,而不是某种类型的语句。
eg:   x=y+3;
这条赋值语句包含两个操作符:+   =,先执行加法,算出y+3的值,然后再将其赋给x.

赋值操作符的结合性是从右向左计算的。
eg:   a=x=y+3;
相当于:x=y+3;    a=x;

复合赋值符:
                     +=        -=         *=        /=       %=
                     <<=      >>=      &=       |=       ^=  
eg:      a+=b+3;
相当于a=a+b+3;

1.5:单目操作符

                        !      ++        -         &       sizeof(类型)
                        ~        --         +         *  


!:逻辑反操作。如果操作数为真(1),则其结果为假(0),操作数为假(0),则          其结果为真(1)。
~:按位取反。操作数的二进制形式中1变0,0变1。
-:操作符产生的的操作数为负值。
+:操作符产生的的操作数为正值(一般省略不写)。
&:地址操作符。产生操作数的地址。
*:间接引用操作符,也称解引用操作符。它与指针一起使用,用于访问指针所指向的          值。
sizeof:判断数据类型长度的关键字,以字节为单位。
           eg:    int  x = 0;
                    int  arr[]={1,2,3,4,5,6,7,8,9,0};

常见用法:sizeof(int)=4;//整型所占的字节数
                  sizeof(x)=4;//整型变量a所占字节
                  sizeof(arr)/sizeof(arr[0])=10;//求数组长度
                  sizeof(arr)=40;//整个数组所占字节数
                         注意:数组名单独放在sizeof后,不表示数组首元素的地址
                                    &arr表示整个数组的地址而不是首元素的地址
                        
sizeof x//正确                 
sizeof int//错误,不能将两个关键字单独放在一起,应加上括号sizeof(int),说明sizeof不是函数而是关键字   
sizeof(int [10])=40;//正确 

eg:   int a=10;
        short s=0;

sizeof(s=a)=2;//表达式没有参与运算,说明sizeof不是函数而是关键字

1.6:关系操作符

                         >  (大于)               >=(大于等于)             ==(等于)
                         <   (小于)              <=(小于等于)             !=(不等于)

如果两端的操作数符合操作符指定的关系,表达式的结果是1,如果不符合,表达式的结果是0。

注意:这些操作符产生的结果都是一个整型值,而不布尔值

1.7:逻辑操作符

                          &&            ||

&&:逻辑与。expression1 && expression2 的值都是真的,整个表达式的值才是真的,         两个表达式中的任何一个表达式的值为假,那么整个表达式的值为假。
||:逻辑或。expression1  ||  expression2 的值有一个是真的,整个表达式的值就是真           的,两个表达式的值都为假,那么整个表达式的值才为假。

注意区别逻辑操作符(&&和||)和位操作符(&和|):二者不可互换。

区别:1.&&和||操作符具有短路性质,即如果表达式的值根据左操作数便可决定,它就               不再对右操作数进行求值。而&和|对两边的操作数都要进行求值。
            eg:   int a=3;
                    if(a>5) && (a<10)
                    ……
                    因为a>5不满足条件,则表达式不再计算(a<10)的值。
           2.逻辑操作符用于测试零值和非零值,而位操作符用于比较它们的操作数中对应                 的位。
           eg:    int a=1;
                    int b=2;
                    
                    if(a && b)……//结果为真
                    if(a & b)……//结果为假

1.8:条件操作符

                         expression1 ?expression2 : expression3

首先计算expression1,如果它的值为真,那么整个表达式的值就是expression2的值,expression3不会进行求值。但是,如果expression1的值为假,那么整个表达式的值就是expression3的值,expression2不会进行求值。

eg:   int x=3,y=5;
        (x < y) ? x++ : y++ ;  //3小于5结果为真,执行x++,x=4
        (x > y) ? x++ : y++ ;  //3大于5结果为假,执行y++,y=6

1.9:逗号操作符

                         expression1,expression2,……,expressionN

逗号表达式从左至右逐个进行求值,整个表达式的结果为最后一个表达式的值。

eg:   if(a*2, b+1, c/2, d>0)……//如果d>0的结果为真,则执行if语句,否则不执行。










年轻就要醒着拼,蚊子好多,呜呜呜!







                         

         




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值