• C语言学习笔记(三)运算符与表达式(上)


    1运算符和表达式

    1.1运算符分类:

    算数运算符:用于算数运算,包括+-*/等。

    关系运算符:用于比较运算,包括><==!=等。

    逻辑运算符:用于逻辑运算,包括&&||、!三种。

    位操作运算符:按二进制位对位运算,包括&|~<<等。

    赋值运算符:用于赋值运算,包括=+=&=等。

    条件运算符:三目运算符,用于条件求值(?:).

    逗号运算符:用于把若干表达式组合成一个表达式(,)

    指针运算符:用于取内容*和用于取地址&

    求字节数运算符:用于计算数据类型所占的字节数sizeof

    特殊运算符:()[]、成员(->,.)等。

    1.2运算顺序

    A.函数计算优先。

    B.其次是强制类型转换。

    C.自增、自减和取反次之。

    D.先乘除再加减。

    E.有括号先算括号内的。

    注:表达式中出现连续两个运算符时最好用空格隔开,如a+++b要写成:a++ +ba+ ++b

    2数据类型转换

    2.1强制类型转换:就是显示的将表达式转换成所需类型。

    方式1(类型名)(表达式).

    方式2(类型名)表达式.

    例:强制类型转换。

    #include "stdio.h"
    #define PI 3.1415926
    main(){
    int m,n;
    float x,y;
    x=2.5;
    y=4.8;
    m=(int)(x+y);	/*强制将浮点型转换成整型*/
    n=(int)x+m/3;	/*强制将x转换成整型*/
    m=n%4;	 /*整型取余*/
    x=x+y;
    printf("m=%d,n=%d,x=%f,f=%f",m,n,x,y);
    }

    注:强制类型转换不会改变原来的变量和表达式的类型属性,只是转换成所 需类型使用。

    2.2隐含类型转换:整型、单精度型和双精度型的不同数值类型可以混合运 算,在运算过程中就有隐式类型转换。

    隐式类型转换的规则就是:从低向高转换,例如charshort可以转 换为int

    3算术运算符与算术表达式

    3.1基本算术运算符:包括+、-、*、/、%五个运算符。

    3.2特殊的算术运算符:自加和自减。

    前缀形式:先对运算对象自增或自减,再引用运算对象的值作为表达式    的值。

    后缀形式:先引用运算对象的值作为表达式的值,再对运算对象自增或    自减。

    示例:++a 等价于a=a+1,--a等价于a=a-1;

       a++ 等价于a=a+1,a--等价于a=a-1;

    注:可以看出单独使用时没有区别,但是在表达式中对表达式影响不同。

    例子代码:

    #include "stdio.h"
    #define PI 3.1415926
    main(){
    int i=6,j=6,k=6, h=6,m,n,x,y;
    m=i++;                      /*后缀形式自加*/
    n=++j;                      /*前缀形式自加*/
    x=k--;                      /*后缀形式自减*/
    y=--h;                      /*后缀形式自减*/
    printf("\n i=%d, m=%d, j=%d, n=%d", i, m, j, n);
    printf("\n k=%d, x=%d, h=%d, y=%d", k, x, h, y);
    }

    4赋值运算符与赋值表达式

    4.1简单的赋值运算符

    简单赋值的作用就是将一个表达式的值赋给一个变量存储起来,例如a=4

    注:赋值运算的左边必须是变量;

    赋值运算优先级比较低,仅优先于,;

    4.2复合赋值运算符

    就是把运算和赋值结合在一起,例如+=-=等。

    例如:m+=3 等价于 m=m+3

    4.3赋值表达式的运算

    使用表达式应该注意的情况:

    4.3.1复合的赋值运算符。

    例子代码:

    #include "stdio.h"
    #define PI 3.1415926
    main(){
      int  x=2,y,z;
      x*=3+2;                 /*等价于x=x*(3+2)*/
      printf("(1)x=%d\n",x);
      x*=y=z=4;             /*等价于y=z=4,x=x*y*/
      printf("(2)x=%d\n",x);
      x=y=1;
      z=x++-1;                /*等价于y=x-1,x=x-1*/
      printf("(3)x=%d***z=%d\n",x,z);
      z=x++*++y;              /*等价于y=y+1,z=x*y,x=x+1*/
      printf("(4)x=%d***y=%d***z=%d\n",x,y,z);
    }

    4.3.2赋值转换:指运算符两边类型不同但都是数值或字符,C就会自动转换相应类型。

    例子代码:

    #include "stdio.h"
    #define PI 3.1415926
    main(){
      	 int a,b=322;
      	 float x,y=8.88;
      	 char c1='k',c2;
      	 a=y;
      	 x=b;
      	 a=c1;
      	 c2=b;
      	 printf("%d,%f,%d,%c",a,x,a,c2);
    }

  • 相关阅读:
    vim操作指南
    Linux的常用命令
    Maven的标准settings.xml文件
    常用的Docker镜像及处理命令
    Java新特性 5、6、7、8、9、10、11、12、13
    数据库的元数据抽取SQL
    元类metaclass
    MySQL视图,函数,触发器,存储过程
    ajax与后台交互案例
    python数据类型小测试
  • 原文地址:https://www.cnblogs.com/SunnyYue/p/3970284.html
Copyright © 2020-2023  润新知