1、C 语言的运算符不仅具有不同的优先级, 而且还有一个特点,就是它的结合性。在表达式中, 各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约, 以便确定是自左向右进行运算还是自右向左进行运算。 这种结合性是其它高级语言的运算符所没有的,因此也增加了 C 语言的复杂性。运算符的种类 C 语言的运算符可分为以下几类:1.算术运算符用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余 (或称模运算,%)、自增(+)、自减(-)共七种。2.关系运算符用于比较运算。包括大于()、小于(=)、小于等于()六种。5.赋值运算符用于赋值运算,分为简单赋值(=)、复合
2、算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值( /*错误格式*/a+b=c; /*错误格式*/a=b=3=c; /*错误格式*/不能给未定义的变量( 未开辟的空间) 赋值. 通常为失误.如:int a;a=1;k=2; /*根本没定义变量 k,何来赋值一说?编译错误!*/如:int a=1,b=c,c=3;/*在定义语句中,程序是按照你的代码书写顺序来逐个开辟空间的,给 b 赋值时,c 变量还没产生呢,怎能使用?编译错误! 当然了,换成 int a=1,c=3,b=c;就万事大吉了.*/变量未明确赋值不能参与运算如: int a,b,c;c=a+b;/* a 和 b 中存放了何值
3、,你敢把它们加起来送给 c?一个有不确定值参与的运算有什么实际意义呢?编译报警!*/运算符 名称或含义 使用形式 结合方向 说明 数组下标 数组名常量表达式() 圆括号 (表达式)/函数名(形参表). 成员选择(对象) 对象. 成员名1- 成员选择(指针) 对象指针-成员名左到右2 - 负号运算符 -表达式 右到左 单目运算符(类型) 强制类型转换 (数据类型)表达式+ 自增运算符 +变量名/ 变量名+单目运算符- 自减运算符 -变量名/变量名- 单目运算符* 取值运算符 *指针变量 单目运算符 x=-a+b*-c; /-1+(2*(2)=3 printf(“%d“,x); 习题二、 int
4、a,b,i,j; i=5,j=5; a=-+i; /-(+i ) b=-j+; /-(j+ ) printf(“%dn“,a); /-6 printf(“%dn“,b); /-5 printf(“%dn“,i); /6 printf(“%dn“,j); /6习题三、void main()int i=8;printf(“%d/n“,+i);printf(“%d/n“,-i);printf(“%d/n“,i+);printf(“%d/n“,i-);printf(“%d/n“,-i+);printf(“%d/n“,-i-); ip,i+1i,i+1i,i+1ij+1-j,j+1-j,j+1-j,j+
5、j+j-q int i=5,j=5,p,q;p=(i+)+(i+)+(i+);q=(+j)+(+j)+(+j); 这个程序中,对 P=(i+)+(i+)+(i+)应理解为三个 i 相加,故 P 值为 15。然后 i 再自增 1三次相当于加 3 故 i 的最后值为 8。而对于 q 的值则不然,q=(+j)+(+j)+(+j)应理解为 q先自增 1,再参与运算,由于 q 自增 1 三次后值为 8,三个 8 相加的和为 24,j 的最后值仍为 8。算术表达式表达式是由常量、变量、函数和运算符组合起来的式子。 一个表达式有一个值及其类型, 它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。 单个的常量、变量、函数可以看作是表达式的特例。