内容正文:
项目三 运算──计算圆的面积和周长
学习目标
了解运算符和表达式。
了解运算符优先级与结合性。
掌握算术运算符及算术表达式。
了解符号常量的定义和使用。
了解各类数值型数据间的混合运算规则。
项目三
运算──计算圆的面积和周长
前面的项目中,已经学习了C语言的数据类型、常量与变量的定义和使用,下面来进一步了解C语言中数据的运算以及运算符和表达式的概念。
本项目将介绍C语言的几种基本运算符及其使用方法,并以一个简单的面积和周长计算应用程序的编写过程为例进行说明。
项目三
运算──计算圆的面积和周长
任务一 了解运算符和表达式
任务二 定义变量
任务三 定义常数π
任务四 输入圆的半径
任务五 计算圆的面积和周长
任务六 输出计算结果
任务七 程序的扩展
任务一 了解运算符和表达式
一、算术运算符
运算类型 运算符 使用举例 说明
加法运算 + 2+x 2和x的和
减法运算 - x-3 x与3的差
乘法运算 * 6*a 6和a的乘积
除法运算 / a/b a除以b的商
模(求余)运算 % x%5 x除以5的余数
① 两个整数相除的结果仍然是整数。例如“3/2”的计算结果是1,而不是1.5。这个结果可以看作是对实际值1.5只保留整数位的结果。又如“10/3*3”的结果应该是9,而不是10。
② 模运算符相当于数学运算中的求余数运算。
③“%”的两侧操作数必须是整数。所以表3-1的模运算式“x%5”中的操作数“x”必须是整数类型。因此“x”可以是int类型和char类型,而不能是float和double类型。
④ 除了模运算之外的算术运算,只要有一个操作数是实数,那么在运算过程中数据会被转换为double类型进行运算,所以相应的运算结果就是double类型的。例如运算式“2+3.0”的结果是double类型的,所以如果执行语句“printf(“%d”,2+3.0);”,会得到错误的结果。又如表达式“10/3.0*3”的结果是double类型的“10.0”。
⑤ 运算符的优先级和数学运算中的优先级类似,“*”、“/”和“%”优先级相同,都要比“+”、“-”运算优先级高。即先进行乘、除和求余运算,然后进行加减运算。
⑥ 在同级运算符中,要按照结合性来决定运算的顺序。上述基本算术运算符的结合性是“自左向右”。
二、强制类型转换运算符
语法形式
(类型)变量
或者
(类型)(表达式)
三、赋值运算符
一般形式如下
变量名 = 表达式
① 赋值运算符左侧不能是常量或者不可寻址的量,如算术运算表达式。所以下面的赋值表达式是错误的。
● 5=a
● (3+4) = a
● (a+1)=b
② 赋值运算是从右向左进行的,即将右边的值赋给左边的变量。并且赋值表达式的值就是赋值运算符左侧变量的值。所以表达式“a=3”的值是3。
③ 赋值运算的结合性是从右向左。即如果存在多个并列的赋值语句,会先执行右边的赋值表达式,如语句“a=b=c=5;”相当于“a=(b=(c=5));”,它的执行顺序是先执行“c=5”,再将“(c=5)”的结果5赋给b,最后将“b=(c=5)”的结果赋给a。所以执行该语句的结果是变量a、b、c的值都变成5。
④ 如果赋值运算符两端的数据类型不一致,那么进行运算时会进行类型转换。
扩展赋值运算符
运算符“+=”表示“+”和“=”的复合形式
“a+=b”等价于“a=a+b”
注意:表达式“a +=b-3”等价于表达式“a=a+(b-3)”。所以下列语句的执行结果为“a=0,b=1”。
int a=2,b=1
printf(“a=%d,b=%d
”,a,b);
四、自增自减运算符
“a++”或者“++a”相当于“a=a+1”
自增运算符的使用方法有两种,一种是前缀式,如“++a”;另一种是后缀式,如“a++”。它们的区别是前缀自增运算符++a表示先将变量a本身存储的值加1,然后再用a的新值参与表达式运算;后缀a++表示先用a的原值进行表达式计算,计算完成后再将a本身存储的值加1。下面两段代码演示了自增运算的两种形式。
① 自增自减运算符只能用于变量,而不能用于常量或表达式。所以“++2”,“(a+b)++”不是合法的自增运算表达式。
② 自增自减运算和加减运算的区别:“a++”会改变原值,表示将a的值加1;而“a+1”只是计算a和1的和,对a本身的值没有影响。
③ 自增自减运算符的优先级高于+、-、*、/和%。
④ 自增自减运算符的结合方向是“自右向左”。
五、逗号运算符
逗号运算符也称为顺序求值运算符,将多个表达式用逗号连接在一起。它的一般形式如下。
表达式1,表达式2,…表达式n
逗号运算符的优先级是最低的。逗号表达