C语言基础简单操作符小结

Part 1 算术操作符
+ - * / %
(1) +

c = a+b;         //  a=2 ,b=3 ,c=5
                 //  a=2.0 ,b=3.0 ,c=5.0

(2) -

c = a-b;         //  a=5 ,b=1 ,c=4
                     //  a=5.0 ,b=.0 ,c=4.0

(3) *

c = a*b;         //  a=2 ,b=3 ,c=6
                 //  a=2.0 ,b=3.0 ,c=6.0 

(4) /

c = a/b;             //  a=3 ,b=2 ,c=1
                     //  a=3.0 ,b=2 ,c=1.5

注意:对于”/”操作符,若两个数都是整数,执行整数除法,若出现浮点数,执行浮点数除法。
(5) %

c = a%b;         //  a=6 ,b=4 ,c=2

注意:对于”%”操作符,操作数必须为整数,返回除整之后的余数。

Part 2 移位操作符
<< 左移操作符
>> 右移操作符
(1) <<
移位规则:
左边抛弃,右边补0,符号不变。

int a = 5;
a = a<<1;        //  a=10
                      //  00000000 00000000 00000000 00000101 
                       // 00000000 00000000 00000000 0000101
                      //  00000000 00000000 00000000 00001010 
int a = -5
a = a<<1;        //  a=-10
                      //  10000000 00000000 00000000 00000101 
                      //  10000000 00000000 00000000 0000101
                      //  10000000 00000000 00000000 00001010  

(2) >>
移位规则:

  • 逻辑移位:左边用0填补,右边丢弃。
  • 算术移位:左边用原值的符号位填补,右边丢弃。
int a = -10;
a = a>>1;   
    //  10000000 00000000 00000000 00001010        逻辑移位 
    //   0000000 00000000 00000000 00000101
    //  00000000 00000000 00000000 00000101       a=5

    //  10000000 00000000 00000000 00001010        算术移位 
    //   0000000 00000000 00000000 00000101
    //   10000000 00000000 00000000 00000101       a=-5

Part 3 位操作符
& | ^
注意:位操作数必须是整数。
(1) & // 按位与,有假为假
(2) | // 按位或,有真为真
(3) ^ // 按位异或,同为1,异为0

int a = 1;
int b = 2;
                      // a&b=0
                      // a|b=3
                      // a^b=3

Part 4 赋值操作符
(1) 单个赋值符 =

int weight = 120;
weight = 90 ;            //  使用赋值操作符赋值

(2) 复合赋值符
+= -= *= /= %= >>= <<= &= |= ^=

int a = 10;
a = a+2;                 //  a=12
a += 2;                  //  a=12  复合赋值

Part 5 单目操作符
单目操作符只有一个操作数
! - + & sizeof ~ – ++ * (类型)
(1) ! 逻辑反操作

int a = 1;
a = !a;                  // a=0,为假

int a = 0;
a = !a;                       // a=1,为真

(2) - 负值
(3) + 正值
(4) & 取地址

printf("%p",&a);             // 以满地址形式输出
printf("#%p",&a);            // 0x+地址

int arr[10] = {0};
printf("%p",&arr);   //  0024F914       取数组地址
printf("%p",&arr+1); //  0024F93C       跳过整个数组取址
printf("%p",arr);    //  0024F914       取数组首元素地址
printf("%p",arr+1);  //  0024F918       跳过首元素,取下一个元素地址

(5) sizeof 操作数的类型长度(以字节为单位)

int a = 1;
printf("%d ",sizeof(a))         //   4

int arr[10] = {0};
printf("%d",sizeof(arr+0));     //   4     数组首元素大小
printf("%d",sizeof(arr));       //   40    数组大小

(6) ~ 对一个数的二进制按位取反
(7) – 前置、后置自减

  • –a 先减,再使用
  • a– 先使用,再减

(8) ++ 前置、后置自增
(9) * 间接访问操作符(对指针进行解引用操作)
(10) (类型) 强制类型转换

float f = 3.14f;
int a = 0;
a = (int)f;                    //  a=3   

Part 6 关系操作符
判断关系
> >= < <= != ==
PS:”==” 用于判断是否相等,与 “=” 区分开

Part 7 逻辑操作符
&& ||
(1) && 逻辑与,两个操作数都为真,结果为真
(2) || 逻辑或,两个操作数都为假,结果为假

PS : 注意区分 && 和 & 、|| 和 |

1 & 2 = 0
1 && 2 = 1

1 | 2 = 2
1 || 2 = 1

Part 8 条件操作符
exp1 ? exp2 : exp3
判断条件 exp1 ,条件满足执行 exp2 ,条件不满足执行 exp3 。

int a = 2;
int b = 0;
b = (a>5)?(3):(-3);              //   b=-3



  初期学习,先小结一下基础的操作符使用。

猜你喜欢

转载自blog.csdn.net/Cherubim1/article/details/78561337