数学运算是计算机最基本的功能,C语言是由各种算术运算符(operator)来完成数学运算的。你不用成为数学天才,只要使用算术运算符按正确顺序把数值排列起来组成一个数学算术表达式(expression),C语言就会完成具体的数学计算。一个算术表达式包含了一个或多个运算符以及常量、变量或数值。
C语言中,当给变量赋值时,经常在赋值运算符=右侧使用算术表达式,比如:
Score = Maths + English + Science; //计算三门课总成绩 Average = (Maths + English + Science) / 3; //计算平均成绩
C 程序会计算出结果并将其存储在变量 Score 和 Average 中。
表 1 列出了 C 语言中常用的 5 种算术运算符。
运算符 | 意义 | 说明 |
---|---|---|
+ | 加法 | |
- | 减法 | 如果减去一个负数,则-左右必须加空格 |
* | 乘法 | |
/ | 除法 | 两个整数相除结果是整数(小数部分被截取);两个数中有一个是浮点数,其结果就是浮点数 |
% | 取模 | 求整数除法的余数,其正负取决于被除数 |
这五种运算符的运算优先级为*=/=%>+=-,即 *、/、% 具有相同的优先级,它们的级别大于 + 和 -,+ 和 - 具有相同的优先级;优先级相同时按从左向右的顺序运算。使用括号可以打破上述优先级规则,括号具有最高的优先级。
在 C语言中的加、减、乘与通常数学运算中的定义完全相同,几乎可以用于所有数据类型;而除法运算在 C语言中较为特殊,详述如下。
C语言中使用/对整型数据进行除运算时,结果的小数部分将被截掉,其被看成是“整除运算”;但若除数或被除数有一个是带小数位的实数,则被看成是“实数除法”,结果中的小数位将进行四舍五入处理。例如:
int Average = 8 / 3; //运行后变量 Average 的值为 2 float Average = 8 / 3; //运行后变量 Average 的值为 2.000000 float Average = 8 / 3.0; //运行后变量 Average 的值为 2.666667 float Average = 8.0 / 3; //运行后变量 Average 的值为 2.666667 float Average = 8.0 / 3.0; //运行后变量 Average 的值为 2.666667
用%求除法余数的运算在编程中称为求模。求模运算只能用于整型数据。例如:
int a = 8 % 3; //运行后变量 a 的值为 2,即 8 除以 3 的余数 2
在 C语言中,字符型的数据也可以参加算术运算。前面讲过,字符在计算机中也是以数字的形式存在的,每一个字符都对应于一个数字(见 ASCII 标准字符代码表),因而字符参加算术运算实际上就是对应字符的十进制字符代码参加运算。例如:
int Su = 'A' + 'B' + 20; //运行后变量 Su 的值为 151
在“ASCII 标准字符代码表”中,字符 'A' 的十进制字符代码是 65,字符 'B' 的十进制字符代码是 66,因而上述语句的计算结果相当于以下语句:
int Su = 65 + 66 + 20;