zoukankan      html  css  js  c++  java
  • C语言-运算符

    一, 运算符:

     连接操作数的一个符号,主要用于算术计算或者逻辑判断

     分类:

     1)参与运算的操作数的个数:单目运算(sizeOf() i++   双目运算  三目运算 (条件运算符)

     2)功能上:算术运算符     关系和逻辑运算符    位运算符

     优先级:

     不同的运算符的计算先后顺序

      结合性:

      前提:优先级相同

     在优先级相同的情况下,到底先计算哪个

    二、算术运算符包括哪些?

     +     -(减)   *   /    %

      算术运算符是一个双目运算

      优先级:不同的运算符的执行的先后顺序

      结合性:左结合   a+3-2+b  // + - +  --->优先级4

      注意事项

     % 求余

     m%n

     1)注意:

     m = 0 结果是0

     n = 0 没有意义

     m > n 正常取余

     m < n 结果是m

      2)求余的正负性

     求余的正负性取决于m的正负性

     3)求余只能用于整数  int i = 10.5%2 错误 

    三 , 数据类型转换问题

     数据类型转换分为强制转换和隐式转换两种:

    强制转换: 

      char c = 'A' ;    int b = a +(int)c;  //把字符型c强制转换为int

    隐式转换:

      int a = 10; float b = 0.5f; double f = a + b; // int类型的a 和float类型的b自动转换成double类型

    四 :赋值运算符

       简单赋值运算:int a = 10+1; a = b = 10; // 注意从右往左,因为赋值运算符优先级最低,

                    注意:不能赋值给常量  10 = a+b(错误)

                    因此if函数中得条件我们为了防止少写一个“=”号(编译器不会报错)我们一般将常量写在左边

      复合赋值运算: 

                           +=   a+=3   // a = a+3;

                          -=   a-=3    // a = a-3;

                           *=

                            /=

                           %=

       同样赋值运算符的计算首先考虑的是运算符的优先级,然后同优先级的情况下考虑结合顺序

    五 : 自增、自减

          1>  i++  ,表示先取出i的值作为表达式的值  a + i++   -->a + 5, a = 6;   ++i  ,表示先让变量值+1,然后再取出i的作为表达式的值 进行计算

          2>i++ 先用后变,  ++i 先变后用

      3> int a = 10;

              将a加1有四种方式

        (1) a = a+1  , (2) a +=1;  (3) a++; (4) ++a;

         注意:int d=1++;//这种写法是错误的,因为对常量进行自加和自减没有任何意义。

      int i = 5, j = 5, p, q;

        // 5/6 + 6/7 + 7/8

        p=(i++)+(i++)+(i++); 

        q=j+++j+++j++;

        printf("%d,%d,%d,%d",p,q,i,j);  //18 18 8 8

    六: sizeof运算符

      作用:计算常量、变量、数据类型在内存中分配的字节数

      注意:sizeof(char) // 1个字节 ;表示程序要内存分配char数据类型1个字节内存空间

                  sizeof('a') // 4个字节;字符常量在内存中以他的ascii码存储 65 -->int

         sizeof("aa") // 3个字节; c语言中得字符串是由字符数组构成一个字符占1个字节并且字符串结束由结尾(表示字符串结束)

        1)sizeof作用常量和变量的时候,括号可以省略

        2)sizeof不能计算函数占用的字节数

    七,逗号运算符

      逗号运算符:“,” 

         逗号表达式:用“,”将多个表达式连接到一起,组成一个新的表达式,这个新的表达式就称之为 逗号表达式

      d=(a+3,b*4)  //逗号表达式

         d=((a+3,b*4),a+b)  //嵌套

      求值的过程:

         分别求每个表达式的值(从左到右依次执行),最后一个子表达式的值作为整个表达式的值返回

      特别:for(int i=0,b=3;i<4;i++,j--)   

    #pragma mark 排序

    void sort_list(PNODE pHead)

    {

        int i, j;

        PNODE p, q;

        for (i = 0, p = pHead->pNext; i<length_list(pHead)-1; i++, p = p->pNext) {      

            for (j = i+1, q = p->pNext; j<length_list(pHead); j++, q = q->pNext) {

                if (p->date>=q->date) {

                    int temp ;

                    temp = p->date;

                    p->date = q->date;

                    q->date = temp;

                }

    八,关系运算符

      一)条件判断

      默认情况下。在程序中写出的每一句正确的代码都会被执行,但很多时候我们需要在某个条件成立的情形下才执行某一段代码,如登录操作,这种情况可以使用条件语句来完成。

       (二)真假

      在C语言中,条件成立称为“真”,条件不成立称为“假”。

      C语言规定,任何数值都有真假性,任何非零值都为真,只有0才为假,无布尔类型。

     (三)关系比较

      关系运算的结果只有两种情况,如果条件成立就为真,值为1,如果条件不成立就为假,值为0。有6种运算符,分别是:(1)<  (2)<=  (3) >  (4) >=  (5)==  (6)!=

    九,逻辑运算符

      逻辑运算的结果只有两个:真(0)和假(1)

      ①. 与   &&   条件1&&条件2 只有的那个条件1和条件2都成立时,才为真否则为假。

      ②. 或   ||    条件1 ||条件2  当条件1或条件2中有一个成立时就为真,都不成立时为假。

      ③. 非   !  !条件   取反

      注意:逻辑运算符在进行运算时,只要能够确定整体的真假性,后面的条件就不再进行而是直接忽略。

      Int a=b=10;

      Int c=(a>5)&&(++b>=11);//此时a==10,b==11,c==1

      Int c=(a<5)&&(++b>=11);//此时a==10,b==10,c==0

      提示:在进行逻辑运算时,如果搞不清楚各个符号的优先级,可以使用()。

        逻辑短路  

         int x, y, z; x = y = z = 0;     ++x || ++y && ++z 执行后y的值   

        因为&&的运算符优先级高于||,所以会先结合,但并没有计算,因为++x表达式为1,||后面的表达

        式就不会参与运算了;

      注意:逻辑短路问题:

        

    // 逻辑与的 短路问题

        // b 已经是0,结果一定是0 所以,后面的 (c=b+5,c++) 不执行了

        //result = b && (c=b+5,c++);   // 0     0

        // 逻辑或的短路问题

        //       2     a是2为真(满足一真为真),|| 后面的不执行了

        //result = a || (c=b+5,c++);

     十, 条件表达式

      格式: 表达式1  ? 表达式2 :表达式3;

      要求比较a和b的值,把数值大的存入到c中  c=a>b?a:b

      比较a,b,c三个数的值,把最大的值存入到d中

      Int  abmax=(a>b)?a:b;

      d=abmax>c:abmax:c;

     

       

  • 相关阅读:
    R()函数的使用 tp2
    __call()的使用
    tp3.1.3 引入静态页面
    tp3.1.3创建应用
    .env文件的使用 thinkphp51
    concat()和push()的区别
    小程序模板template使用
    56. 从1到n整数中1出现的次数
    55. 连续子数组的最大和
    54. 数据流中的中位数
  • 原文地址:https://www.cnblogs.com/-boy/p/4019926.html
Copyright © 2011-2022 走看看