数据类型及其输入输出.ppt
四、表达式的分类C语言表达式种类很多,有多种分类方法。我们一般依据运算的特征将表达式分为:①算术表达式,如a+b*2.0-3.0/5.0。②关系表达式,如x=y,关系表达式可以认为是逻辑表达式的特殊情况。③逻辑表达式,如(x=2)(x=8)。④赋值表达式,如a=b=c=1。⑤条件表达式,如(ab)?a:b。⑥逗号表达式,如a=2,b=a*a,c=sqrt(b)。表达式值的数据类型每个表达式都有一个确定的值,因而有确定的数据类型。表达式的分类和数据类型取决与最后执行的运算符,如:5+(76)为算术表达式,类型是double型,值35.55+76为关系表达式,类型是int型,值1算术运算符和算术表达式1、分类单目运算符-负号运算++自增--自减双目运算符+加-减*乘/除%求余“/”如果是两个整型数相除,取整;如有一个为实数时,其意义就是实数除,结果为double型。5/2=25.0/2.0=2.5“%”取余数,只能对整数取余数,不能对浮点数取余数。运算结果的符号与左操作数相同。5%2=1-35%8=-335%-8=3自增操作符和自减操作符2、自增操作符和自减操作符格式:++i,i++--i,i--作用:是使自变量i的值加1或减1,相当于i=i+1或i=i-1。前置自增或前置自减操作:表示先修改操作数使之增1或减1,然后取修改后的操作数的值作为表达式的值。后置自增或后置自减操作:表示在表达式中先取操作数的值,然后再将操作数值增1或减1。例如:j=i++;j的值为3(首先将i的原值赋给j,然后i自身再加1)j=++i;j的值为4(i自身先加1,然后再将加1后的值赋给j)#includestdio.hvoidmain(){inti,j,k;i=3;j=i++;k=++i;printf(“i=%d,j=%d,k=%d\n”,i,j,k);}范例:输出结果:i=5,j=3,k=52、在表达式中如果有2个以上的“+”或“-”连写在一起,则编译器首先识别前面两个+或-为自增或自减操作符。例如:在使用自增或自减运算符时注意如下几个问题:1、自加或自减运算只能用于变量,不能用于常量或表达式;错误:25++(i+j)++例如-i++,只能理解为-(i++)。因为(-i)++为表达式,表达式是不能自加自减的。i=3;j=-i++;printf(“%d”,j);输出结果应为-3,而不是是-4。inta=1,b=5,c;c=a+b;c=a+++b;c=a++b;正确:c=6错误:++不是双目运算符正确:a+++b3、表达式中包含有自增、自减运算时,容易出错,务请小心。如有:i=1;则:类似上面分析,应为3,当然表达式计算完成后i的值同样改变为4。(++i)+(++i)+(++i)的值为多少呢?是9(=2+3+4)吗?不对!计算时先对整个表达式扫描,i先自增3次,由1→2→3→4,如此计算结果为4+4+4,等于12。(i++)+(i++)+(i++)的值又是多少呢?赋值运算符和赋值表达式1、赋值运算符:=使用方法:变量=表达式赋值运算时先计算右边表达式的值,然后将右边表达式的值赋给左边变量,并以此值作为整个赋值表达式的值。(1)赋值运算的优先级为第14级,次低。如:inti,a,b,c,p;i=3+5%2;/*先计