3.5 C语言的运算符
C语言中的运算符号指的是一些实现特定功能的由非数字和字母组成的符号,比如加减乘除(分别对应+,-,×,/)等,按其应用场合的不同,主要有算术运算符、大小关系运算符、逻辑关系运算符、位操作运算符以及一些完成特殊任务的运算符等,本节按照应用场合的不同,对C语言中的运算符进行介绍。
3.5.1 模块运算符
C语言中的模块运算符由“起始”和“终止”两部分组成,如小括号运算符的开始为“(”,终止为“)”,这两部分连同其中间部分构成一个模块,实现了特定的功能,如表3-21所示。
表3-21 模块运算符的功能
小括号操作符的作用主要有四个,分别为约定优先级、进行类型转换、限定函数的参数列表以及用在某些关键词构成的固定语句中;中括号可以用来获得数组变量的元素和指针变量取偏移后的值;而大括号的用途主要也有四个方面,分别为构成一个程序块,作为函数体的开头和结尾,作为结构体、联合体中作为开头和结尾以及为数组进行赋值。图3-51中的代码展示了模块运算符的使用方法。
图3-51 模块运算符的使用方法示例代码
3.5.2 算数运算符
C语言中运用多种算数运算符,可以方便地完成加法、减法、乘法、除法、移位等,并可以通过小括号规定算式中不同部分的优先级,如表3-22所示。
表3-22 算数运算符的功能
C语言支持在一个表达式中将多种运算符进行组合,并使用小括号改变部分计算的优先级。例如表3-23所示的代码中示范了一个复杂的计算算例。程序执行之后,变量b的数值应为18*(18+2)+(18+18)/18-(18<<1)-(18%4) =360+2-36-2=324,变量c的数值从表达式上看,似乎应为18+(18-5)/2=18 +6.5=24.5,但因为变量a和c均为整型,所以实际运行中,小数部分被舍去,因此变量c的最终数值为24。变量d的数值为18。变量e的数值为18+(18-5)/2 =18+6.5=24.5。
表3-23 算数运算符的代码示例
3.5.3 变量自操作
当需要对一个变量进行操作,之后又将结果存入该变量时,可以使用C语言专用的运算符。表3-24中给出了相应的操作符以及对应的等效表达式。利用这些操作符可以精简代码,并降低重复输入变量名称带来的潜在错误风险。
表3-24 自操作运算符的功能
利用自操作运算符可以精简代码,提高代码的可阅读性。表3-25给出了一个代码示例以及执行完各条指令后变量的数值。
表3-25 自操作运算符的代码示例
3.5.4 大小关系运算符
大小关系运算符是用来比较数值、变量、常数或者表达式的大小关系的。主要有大于、小于、等于、不等于、不大于和不小于。如表3-26所示。
表3-26 大小关系运算符
利用大小关系运算符形成的表达式的比较结果为0或者1。如果为0,表示表达式不成立;如果为1,则表示表达式成立。表3-27中的代码中展示了比较操作符的具体使用方法。
表3-27 大小关系运算符的示例代码
3.5.5 逻辑关系运算符
逻辑关系运算符可以用来连接多个逻辑比较的结果。利用逻辑关系运算符得到的结果有“成立”和“不成立”两种,分别是根据数值0和数值1进行判定的。C语言中支持的逻辑关系运算符有“逻辑并且”“逻辑或者”和“逻辑非”三种,如表3-28所示。
表3-28 逻辑关系运算符
表3-29中的代码使用了不同逻辑关系运算符。当语句执行之后,变量x1、x2、x3、x4的值均为1,而变量y1、y2、y3、y4的值均为0。
表3-29 逻辑关系运算符代码示例
3.5.6 特殊运算符
C语言中常用的特殊运算符有取地址和取内容两种,如表3-30所示。
表3-30 特殊运算符
表3-31中的代码示范了如何利用特殊运算符获取变量的地址和指针变量的内容。
表3-31 特殊运算符示例代码