程序是由许多语句(statement)组成的,而语句组成的基本单位就是表达式和运算符。C语言程序的常用运算符可以分为3类:算术运算符、关系运算符和逻辑运算符。
1.算术运算符
算术运算符在C语言程序设计中主要用于量之间的运算。而且,算术运算符为数学类学科中常用运算符。
(1)基本算术运算符,如表2-2所示。
表2-2 常用算术运算符一览表
①加法运算符“+”:作用为将加法运算符“+”的前后两个操作数相加,有时也称正值运算符。
②减法运算符“-”:作用为将减法运算符“-”前面的操作数减去后面的操作数,有时也称负值运算符。
③乘法运算符“*”:作用为将乘法运算符“*”的前后两个操作数相乘,由于键盘上无“×”,以“*”代替。
④除法运算符“/”:作用为将除法运算符“/”前面的操作数除以后面的操作数,由于键盘上无“÷”,以“/”代替。
⑤模运算符“%”:作用为将模运算符“%”前面的操作数除以后面的操作数,取其得到的余数,有时也称求余运算符。运算符“%”两侧均应为整型数据。
(2)自增与自减运算符
在C语言程序设计中,自增、自减运算符的作用是使某一可变量的值增1或减1,例如:
①++i,--i (在使用i之前,先使i的值加1或减1)
②i++,i-- (在使用i之后,使i的值加1或减1)
其中,++i和i++的作用相当于i=i+1。但是需要注意:++i和i++在表达式中的表达方式相同,但是在执行顺序理解中不同,不同之处在于:
①++i是先执行i=i+1后,再使用i的值。
②i++是先使用i的值后,再执行i=i+1。
2.关系运算符
在C语言中,比较符(或称比较运算符)称为关系运算符。所谓的“关系运算”就是将两个值进行比较,判断其比较结果是否符合所给定的条件。
例如:
a>2是一个关系表达式,“>”是一个关系运算符,如果a的值为3,则满足给定的条件“a>2”因此关系表达式的值为“真”;若a的值为1,则不满足给定的条件“a>2”因此称关系表达式的值为“假”。
C语言提供的关系运算符如表2-3所示。
表2-3 常用关系运算符一览表
需要注意:在C语言程序中,大多数关系运算符的表示方式和在数学中类似,但有些不同:
①赋值运算符为“=”,为了避免混淆,当使用关系运算符“等于”时,就必须用2个“==”表示。
②由于要从键盘上输入数学上的不等于符号“≠”较为困难,同时“!”有“非”的意思,所以关系运算符“不等于”的形式用“!=”代表。
3.逻辑运算符
有时需要判断的条件不是一个简单条件,仅用一个关系表达式是无法表示的,需要用两个或多个关系表达式或逻辑运算符来处理。逻辑运算符的操作数和运行结果只能是真(true)或者假(false)。常见的逻辑运算符有3个,即与(&&)、或(||)、非(!),如表2-4所示。
表2-4 常用逻辑运算符一览表
“&&”和“||”是“双目(元)运算符”,它要求在运算符的两侧各有一个操作数,如(a>b)&&(x>y)、(a>b)||(x>y)。“!”是“一目(元)运算符”,只要求在它的右侧有一个运算量,如!a、!(a<=b)。
需要注意:
①逻辑运算符“&&”,要求左右两个表达式同时为true,值才为true,如果左边表达式为false时,右边表达式不参与计算,结果直接为false。
②逻辑运算符“||”,要求左右两个表达式有一个为true,值就为true,如果左边表达式为true,则右边表达式不参加计算,结果直接为true。
4.算术、关系及逻辑表达式
(1)算术表达式
用算术运算符和括号将运算对象(即操作数)连接起来的符合C语言语法规则的式子,称为算术表达式。运算对象可以是常量、变量、函数等。
(2)关系表达式
关系表达式常用于程序判断语句中,由关系运算符组成,其运算结果为逻辑型数值。逻辑值,即“真”或“假”。
例如:
关系表达式“5>6”的值为“假”,“7==7”的值为“真”。在C语言的逻辑运算中,以“1”为真,以“0”为假。
【例2.2】请给出一个合法的算术表达式。
a*b/c-1.5+′a′(www.xing528.com)
【例题中关键问题说明1】
C语言算术表达式的书写形式与数学表达式的书写形式有一定的区别。
(1)C语言算术表达式的乘号(*)不能省略。
例如:
数学表达式b2-4ac,相应的C语言表达式应该写成b*b-4*a*c。
(2)C语言表达式中只能出现字符集允许的字符。
例如:
数学表达式πr2相应的C语言表达式应该写成PI*r*r(其中PI是已经定义的符号常量)。
(3)C语言算术表达式只能使用圆括号改变运算的优先顺序(不能使用{}、[])。可以使用多层圆括号,此时左右括号必须配对,运算时从内层括号开始,由内向外依次计算表达式的值。
【例题中关键问题说明2】
所谓表达式求值,就是按表达式中各运算符的运算规则和相应的运算优先级来获取运算结果的过程。对于表达式求值,一般要遵循的规则是:
(1)按运算符的优先级高低次序执行。
先乘除后加减,如果有括号,则先计算括号内的部分。
(2)如果一个运算对象(或称操作数)两侧运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。
例如:
算术运算符的结合方向是“自左向右”,即:在执行“a-b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。在其他类的运算符中,除赋值运算符外,绝大部分双目运算符的结合方向是“自左向右”,即左结合性,而绝大部分单目运算符的结合方向是“自右向左”,即右结合性。
例如,求算术常量表达式“9%(5-4)*10+1”的值,求值顺序为:
先计算5-4得1,再计算9%1得0,然后计算0*10得0,最后计算0+1得1,所以,表达式的值为1。
【例2.3】若a=2,b=3,c=1,判断下面关系表达式真、假及值。
①关系表达式“a>b”
值为假,则表达式的值为0。
②关系表达式“a+b>c”
值为真,则表达式的值为1。
③关系表达式“(b>a)==c”
值为真,则表达式的值为1。
(3)逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来有意义的式子称为逻辑表达式。逻辑表达式的值也是一个逻辑值,即“真”或“假”,表2-5为逻辑运算的真值表。
表2-5 逻辑运算的真值表
C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。即将一个非零的数值作为“真”。
【例2.4】根据下面逻辑表达式值,判断真、假:
①若a=3,则!a的值为0。因为a的值为非0,被认作“真”,对它进行“非运算”,得“假”。“假”以0代表。
②若a=3,b=4,则a&&b的值为1。因为a和b均为非0,被认为是“真”,因此a&&B的值也为“真”,值为1。
③a和b值分别为3和4,a‖b的值为1。
④a和b值分别为4和5,!a‖b的值为1。
⑤4&&0‖2的值为1。
通过以上事例可以看出,系统给出的逻辑运算结果不是0就是1,不可能是其他数值。而在逻辑表达式中作为参加逻辑运算的运算对象可以是0(“假”)或任何非0的数值(“真”)。如果在一个表达式中不同位置上出现数值,应区分哪些是作为数值运算或关系运算的对象,哪些作为逻辑运算的对象。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。