zoukankan      html  css  js  c++  java
  • C语言学习笔记(四)运算符与表达式(下)

    1逗号运算符和逗号表达式

    1.1逗号表达式格式:表达式1,表达式2,表达式3,...,表达式n;

    该表达式的功能是:先计算表达式1,再计算表达式2,最后计算表达式 n,最后一个表达式的值为此逗号表达式的值。

    1.2逗号表达式的优先级:最低。

    1.3逗号表达式的值:

    例子代码:

    #include "stdio.h"
    main(){
      int a,b,c;
      a=1,b=2,c=a+b+3;
      printf("%d,%d,%d\n",a,b,c);
      c=(a++,a+=b,a-b);                    	/*变量c保存逗号表达式的值*/
      printf("%d,%d,%d\n",a,b,c);        	/*逗号表达式的作用为顺序求值*/
    }

    输出结果如下:

    1,2,6

    4,2,2

    2关系运算符和关系表达式

    2.1C语言中的真值和假值:C语言中没有逻辑型数据,所以C语言规定,用整型常量1来表示真值,所有非0的表达式和常量的逻辑值都为1,用整型常量0表示假值,只有表达式的值为0的常量和表达式的逻辑值为0

    关系表达式例子代码:

    #include "stdio.h"
    main(){
      char x='m',y='n';
      int n;
      n=x<y;                             /*取关系表达式x<y的值*/
      printf("%d\n",n);
      n=x==y-1;                          /*取关系表达式x==y-1的值*/
      printf("%d\n",n);
      n=('y'!='Y')+(5<3)+(y-x==1);       /*取关系表达式x==y-1的值*/
      printf("%d\n",n);
    }

    程序运行结果:

    1

    1

    2

    关系表达式参加算术运算:

    #include "stdio.h"
    main(){
      int a,b,c;
      a=b=c=10;                             /*变量a,b,c赋初值*/
      a=b==c;
      printf("a=%d,b=%d,c=%d\n",a,b,c);     /*注意等号与赋值号的区别*/
      a=(b+(c++>2));
      printf("a=%d,b=%d,c=%d\n",a,b,c);
      /*关系表达式的值可以参加运算c++>2成立,值为1和b相加值放到a中存放*/
      a=b>c*100;
      printf("a=%d,b=%d,c=%d\n",a,b,c);
      /*利用关系表达式计算要注意运算的优先级*/
    }

    程序运行结果:

    a=1,b=10,c=10

    a=11,b=10,c=11

    a=0,b=10,c=11

    3逻辑运算符和逻辑表达式

    3.1基本逻辑运算符包括:单目运算符!,双目运算符&&、||。

    逻辑与运算符例子代码:

    #include "stdio.h"
    #define PI 3.1415926
    main(){
       int  m,n;
       int k;
       k=(m=0)&&(m=1);
       printf ("%d,%d\n",m,k);
       k=(m=1)&&(m=0);
       printf ("%d,%d\n",m,k);
       k=(m=2)&&(m=1)&&(m=0);                   /*多层逻辑与运算的规则测试*/
       printf ("%d,%d\n",m,k);
       m=0,k=0;
       n=k++&&m++;
       printf ("%d,%d,%d\n",k,m,n);
       m=0,k=0;
       n=m++&&k++;                             /*测试表达式k++&&m++与m++&&k++*/
       printf ("%d,%d,%d\n",k,m,n);
    }

    程序运行结果:

    0,0

    0,0

    0,0

    1,0,0

    0,1,0

    逻辑或运算符例子代码:

    #include "stdio.h"
    main(){
      int  m,n;
      int k;
      k=(m=0)||(m=1);                        /*逻辑或运算的计算规则*/
      printf ("%d,%d\n",m,k);
      k=(m=1)||(m=0);
      printf ("%d,%d\n",m,k);
      k=(m=2)||(m=1)||(m=0);                 /*多层逻辑或运算的规则测试*/
      printf ("%d,%d\n",m,k);
      m=0,k=0;
      n=++m||++k;
      printf ("%d,%d,%d\n",k,m,n);
      m=0,k=0;
      n=++k||++m;
      printf ("%d,%d,%d\n",k,m,n);          /*测试表达式++k||++m与++m||++k+*/
    }

    程序运行结果:

    1,1

    1,1

    2,1

    0,1,1

    1,0,1

    逻辑与和逻辑或混合运算例子代码:

    #include "stdio.h"
    main(){
      int m,k;
      k=(m=0)||(m=1)&&(m=2);    /*表达式理解为(m=0)||((m=1 )&&(m=2))*/
      printf ("%d,%d\n",m,k);
      k=(m=2)||(m=1)&&(m=0);     /*表达式理解为(m=2)||((m=1)&&(m=0))*/
      printf ("%d,%d\n",m,k);
      k=(m=2)&&(m=1)||(m=0);     /*表达式理解为((m=2)&&(m=1))||(m=0)*/
      printf ("%d,%d\n",m,k);
      k=(m=0)&&(m=1)||(m=2);     /*表达式理解为((m=0)&&(m=1))||(m=2)*/
      printf ("%d,%d\n",m,k);
    }

    程序运行结果:

    2,1

    2,1

    1,1

    2,1

    4条件运算符和条件表达式

    4.1条件运算符"?:"C语言中唯一的的三目运算符,优先级高于赋值运算

    表达式语法: 表达式1?表达式2:表达式3

    其执行顺序是:先求解表达式1,若为0则执行表达式2,否则执行表达式3

    例子代码:

    #include "stdio.h"
    main(){
      char  ch;
      scanf("%c" , &ch);	 /*  输入一个字符,赋给变量ch  */
      ch=(ch>='A'&&ch<='Z')?(ch+'a'-'A'):ch;        /*  当字符为大写字母时,将其变为小写字母 */
      printf("\n%c",ch);
    }

    5sizeof运算符

    5.1sizeofC语言的一种单目运算符,运算对象是变量名、表达式或数据类型标示符。功能是以字节形式给出操作数的存储大小。

    5.2语法格式:sizeof(表达式或 sizeof 表达式 或sizeof(数据类型)

    6取地址运算符

    6.1取地址运算符的运算对象只能是变量,运算结果为变量的存储地址。

    7几种运算混合运用

    例子代码:

    #include "stdio.h"
    main(){
      int x,y=1,z;
      x=((9+6)%5>=9%5+6%5)?1:0;  /*((9+6)%5>=9%5+6%5)等价于(((9+6)%5)>=(9%5+6%5))其值为0*/
      printf(" x=%d\n",x);
      y+=z=x+3;                    /* y+=z=x+3等价z=x+3,y=y+z*/
      printf(" y=%d\t z=%d\n",y,z);
      x=y=z=1;
      --x&&++y||z++;               /*混合的逻辑与和逻辑或运算*/
      printf(" x=%d\t y=%d\t z=%d\n",x,y,z);
    }

    程序运行结果:

      x=0

      y=4  z=3

      x=0  y=1 z=2

  • 相关阅读:
    底部菜单栏之Fragment的详细介绍和使用方法
    Warm up 2
    如何做好一位资深的web前端工程师
    使用 HTML5 canvas 绘制精美的图形
    计算元素距离浏览器左边的距离
    [JSOI2016]独特的树叶
    【SDOI2009】Elaxia的路线
    【SCOI2009】最长距离
    【SCOI2009】围豆豆
    【AHOI2005】穿越磁场
  • 原文地址:https://www.cnblogs.com/SunnyYue/p/3970283.html
Copyright © 2011-2022 走看看