【六六互联】长期出售【美国抗投诉服务器】【欧洲抗投诉服务器】【亚洲抗投诉服务器】

C语言的运算符非常丰富,能够组成不同的类型的表达式

C语言运算符非常丰富,能够组成不同的类型的表达式

比如:

1+2*3-10

其中,12310称为操作数,+ *-称为运算符

上面的表达式先进行*运算,再进行+运算和-运算,这是因为运算符的优先级不同,*的优先级高于+-,所以先进行*运算。

进行-运算时,是710,而不是107,这是由运算符的结合性决定的,-运算符的结合性是从左到右。

运算符不仅具有不同的优先级,还有不同的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。

C语言的运算符可分为以下几类,见表2-9所示:

              2-9 运算符的类型说明

 

运算符

 

 

算术运算符

 

用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种

 

关系运算符

 

用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种

 

逻辑运算符

 

用于逻辑运算。包括与(&&)、或(||)、非(!)三种 

 

位操作运算符

 

参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种

 

赋值运算符

 

用于赋值运算,分为简单赋值(=)、复合算术赋值(+=, -=, *=, /=, %=)和复合位运算赋值(&=, |=, ^=, >>=, <<=)三类共十一种

 

条件运算符

 

这是一个三目运算符,用于条件求值(?:)

 

逗号运算符

 

用于把若干表达式组合成一个表达式()

 

指针运算符

 

用于取内容(*)和取地址(&)二种运算

 

求字节数运算符

 

用于计算数据类型所占的字节数(sizeof)

 

特殊运算符

 

有括号(),下标[],成员(->.)等几种

表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,它们分别是计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行,单个的常量、变量、函数可以看作是表达式的特例。C语言中各运算符的优先级和结合性见附录C

1.一般算术运算符

C语言基本算数运算符如表2-10所示:

2-10 基本运算符                  

 

名称

 

符号 

 

说明

 

加法运算符

 

+

 

双目运算符,即应有两个量参与加法运算,具有左结合性。

 

减法运算符

 

-

 

双目运算符。作负值运算符时为单目运算符,具右结合性。

 

乘法运算符

 

* 

 

双目运算符,具有左结合性。

 

除法运算符

 

/

 

双目运算符,具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型

 

求余运算符(模运算符)

 

%

 

双目运算符,具有左结合性。要求参与运算的量均为整型,不能应用于floatdouble类型。求余运算的结果等于两数相除后的余数,整除时结果为0

双目运算符+-具有相同的优先级,它们的优先级比运算符*/%的优先级低,而运算符*/和%的优先级又比单目运算符-(负号)的优先级低。

2-13】除法运算符

#include<stdio.h>

int main()

{

printf("\n\n%d,%d\n",20/7,-20/7);

printf("%f,%f\n",20.0/7,-20.0/7);

return 0;

}

程序运行结果:

 

 

2-2

2.857143,-2.857143

本例中,20/7-20/7的结果均为整型,小数全部舍去。而20.0/7-20.0/7由于有实数参与运算,因此结果也为实型。

2-14】取余运算符

#include<stdio.h>

int main()

{

printf("%d\n",100%3);

return 0;

}

程序运行结果:

1

本例输出100除以3所得的余数1

2.自增、自减运算符

自增运算符(++)和自减运算符在C语言中使用比较频繁,这两个运算符有一个共同的特点,就是它们既可以出现变量的左边,构成前置++/--,又可以出现在变量的右边,构成后置++/--

前置++/--的语法规则:现将变量的值加1/1,再使用该变量。

后置++/--的语法规则:先使用该变量,再将变量的值加1/1

2-15】使用自增、自减运算符

#include<stdio.h>

int 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--);

return 0;

}

程序运行结果:

9

8

8

9

-8

-9

i的初值为8,第4i1后输出故为9;第5行减1后输出故为8;第6行输出i8之后再加1(9);第7行输出i9之后再减1(8) ;第8行输出-8之后再加1(9),第9行输出-9之后再减1(8)

3.逗号运算符

C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:

表达式1,表达式2;

其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。

2-16】逗号运算符举例

#include <stdio.h>

int main()

{

int a=2,b=4,c=6,x,y;

y=(x=a+b,b+c);

printf("y=%d,x=%d\n",y,x);

return 0;

}

程序运行结果:

y=10,x=6

本例中,y等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。

对于逗号表达式还要说明三点:

(1)逗号表达式一般形式中的表达式1和表达式2也可以又是逗号表达式。

例如:

表达式1, ( 表达式2, 表达式3 )

形成了嵌套情形,因此可以把逗号表达式扩展为以下形式:

表达式1, 表达式2, …表达式n

整个逗号表达式的值等于表达式n的值。

(2)程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。

(3)并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。