操作符的秘密

时间:2021-12-09 17:47:52

一 :操作符

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语句,否则不执行。









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