C语言操作符简单介绍

来源:互联网 发布:宁夏干部网络培训学校, 编辑:程序博客网 时间:2024/05/22 03:23

   

    在C语言中,操作符主要包括算数操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员。

 

以下为各操作符简单介绍:

1.算术操作符:

  +   —   *   /    %

例:

    定义整型变量 a = 4,b = 2.

运算符

 

含义

运算操作

结果

+

 

加法运算符

a + b

a和b的和  6

-

 

减法运算符

a - b

a和b的差  2

*

 

乘法运算符

a*b

a和b的乘积  8

 /

 

除法运算符

a/b

a除以b的商  2

%

 

求余运算符

a%b

a除以b的余数  0

+

正号运算符(单目运算符)

+a

a  4

-

负号运算符(单目运算符)

-b

-b的值    -2

注:

<1>.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数;

<2>.对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法;

<3>.%操作符的两个操作数必须为整数。返回的是整除之后的余数。

 

2.移位操作符

<<     左移操作符

>>     右移操作符

<1>.左移操作符 <<

   移位规则:

            左边抛弃,右边补零

   

注:实际上变量(a)在没有被赋值的情况下,自身的值不会变化。

<2>.右移操作符  >>  

     右移运算分为逻辑右移和算数右移两种

其移位规则为:

    逻辑右移: 左边用0补充,右边丢弃

    算数右移: 左边用原该值的符号位填充,右边丢弃

例:

  int num = -1;

  则在内存中存储的补码为(32个1):

  11111111111111111111111111111111

   (注:整型在内存中的存储为原数值的补码。其中正数的原码、反码、补码都相同,都为其原码;负数的补码为反码 + 1 .

     例:int a =1;

         原码:00000000000000000000000000000001

         反码:00000000000000000000000000000001

         补码:00000000000000000000000000000001

 

         int b = -1;

         原码:10000000000000000000000000000001

         反码:11111111111111111111111111111110   <符号位不变>

         补码:11111111111111111111111111111111   <反码+1>

       )

逻辑右移:

    左边补零

 

01111111111111111111111111111111

                                     (最右边的1丢弃)

算数右移:

    左边用该原值的符号位填充

 

11111111111111111111111111111111

                                    (最右边的1丢弃)

注:

  对于移位运算符,不要移动负数位,是标准为定义的。

 

3.位操作符

 &     按位与  

 |      按位或

 ^      按位异或   (不同为真)

例: int a =13;

     int b = 5;

     a     00000000000000000000000000001101

     b     00000000000000000000000000000101

    a&b   00000000000000000000000000000101

    a|b    00000000000000000000000000001101

    a^b    00000000000000000000000000001000

注:

  操作数必须为整数

 

4.赋值操作符

=      +=     -=     *=     /=     %=     >>=     <<=     &=     |=     ^=

例:

  int x = 8;

  x = x + 10;

  x += 10;    //复合赋值,x +=10;  与 x = x + 10;得到的解果是相同的。其余运算符用法相似。

 

5.单目操作符

!          逻辑反操作                              

-          负值

+          正值

&          取地址                                     

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

~         对一个数的二进制按位取反

--          前置--;后置--

++         前置++;后置++

*          简介访问操作符(解引用操作符)

(类型)   强制转换类型

注:后置++ (--) 的用法为先引用、后运算;前置++(--) 的用法为先运算,后引用。

例:

    #include<stdio.h>

    int main()

    {

        int i = 2;

        int j = 5;

        int x = i++;

        int y = --j;

        printf("i = %d  x = %d  j = %d  y = %d\n ",i,x,j,y);   //输出结果为i =3  x = 2  j = 4  y = 4

        return 0;

    }

 

6.关系操作符

   >        >=         <         <=        !=        ==

(大于)(大于等于)(小于)(小于等于)(不相等)(相等)

注:

   != 用于测试“不相等”;

   == 用于测试“相等”;

   不要将 == 和 = 用混了,== 为比较是否相等,= 用于赋值。

 

7.逻辑操作符

&&         逻辑与

||          逻辑或

注:

  这里注意区分逻辑与和按位与   以及   逻辑或和按位或;

例:

  1 & 2 ————> 0    按位与

  1 && 2————>1    逻辑与

  

  1|2————>3       按位或

  1||2————>1      逻辑或

 

8.条件操作符

  exp1 ? exp2 : exp3

  判断exp1是否为真,若为真,则exp2;若为假,则exp3

 

9.逗号表达式

       用逗号隔开的多个表达式

例:

  exp1 , exp2 ,exp3,…… expn

注:逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

例:

   #include<stdio.h>

   int main()

   {

       int i,j;

       for(i = 0 ,  j = 0; i < 2 , j < 5; i++ , j++)  

       {

           printf("c\n");    //共输出5个c

       }

    }

 

 

10.下标引用、函数调用和结构成员

 

(1)[ ]

     操作数:一个数组名 + 一个索引值

     例:

        int arr[20];  //创建数组

        arr[10] = 10;   //使用下标引用操作符

        [ ]的两个操作数是arr和9。

(2)  ()

       函数调用操作符

       接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数是传递给函数的参数。

(3)访问一个结构体的成员

     .结构体.成员名

     ->结构体指针->成员名