C语言 第六课 运算符及表达式
§6.3 算术运算符/表达式 例:数学表达式 转 C表达式 s(s-a)(s-b)(s-c) §6.3 赋值操作(赋值表达式) 例6-1 复合算术赋值运算符 #include void main( ) { int x, y, z; z=(x=7)+(y=3); printf("%d,%d,%d\n", x, y, z); x=y=z=x+2; printf("%d,%d,%d\n", x, y, z); x*=y-3; printf("%d,%d,%d\n", x, y, z); } 自增、自减表达式的值 /*程序:ex06_02.c 演示 i++ 和 ++i 的区别 */ #include void main() { int i,n; i = 5;//给i赋初值 n = i++;//改为 n=++i 后重新运行本程序 printf("i=%d,n=%d\n",i,n); } 表达式1, 表达式2, ……,表达式n 先计算表达式1,然后计算表达式2,……,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值. 逗号运算符的优先级最低,从左向右 a = (3+5 , 4*6 ) a = 3+5 , 4*6 例:自动类型转换(赋值运算) double x; x = 1; 强制类型转换运算符 (类型名) 表达式 优先级同++,从右向左 (double)3 (int)3.8 (double)(5/2) (double)5/2 §6.7 运算符优先级 ( ) - + ++ -- (类型名) * / % +- = += -= *= /= %= , * * C语言程序设计 第六课 运算符与表达式 湛江师范学院 陈其嶙 alinxx@126.com §6.1 运算符与表达式的相关概念 到现在为止,我们了解了C语言中各种数据类型的特点及其表示形式。那么如何对这些数据进行处理和计算呢?通常当我们要进行某种计算时,都要首先列出算式,然后求解其值。在程序设计中,表达式是计算求值的基本单位。 简单的说,表达式是由运算符(例如:+ - * /)、操作数(可以是常数、变量等等)和括号组成。执行表达式所规定的运算,所得到的结果值便是表达式的值。例如 a+b,x/y 都是表达式。 C语言中定义了丰富的运算符,如算术运算符,关系运算符、逻辑运算符等等。有些有些运算行需要两个操作数,使用形式为: 操作数1 运算符 操作数2 这样的运算符称为二元运算符(或双目运算符)。另一些运算符只需要一个操作数,称为一元运算符(或单目运算符)。 §6.2 运算符与表达式注意的问题 1、表达式的值 5 + 10 2、运算符的优先级 6 + 5 * 4 3、运算符的结合性 10 / 5 * 2 4、变量的值 int a = 5; a = a + 2; 和其它高级语言一样,C语言分别用+、-、*、/表示四则运算的加、减、乘、除运算符。C语言基本的算术运算符如表所示。 a%b; 7%4; 模(求余)运算符 % a/b; 9/4; 5.0/3.0 除法运算符 / a*b; a*a; 3*a; 乘法运算符 * a-b; -3; 减法运算符或负值运算符 - a+b; 3+5; +5; 加法运算符或正值运算符 + 举例 功能介绍 运算符 注意事项: 1)加、减运算符,如果当作正、负符号使用时,就不是加减运算符了,正、负号的优先级要高于乘、除运算符。 2)除法运算,如果两个操作数是整数,则是整除运算,其结果是整数。例如 5/3=1,-5/3=-1,舍弃了小数部分。如果两个操作数中有实数,则此运算符变为实数相除运算,结果是实数。例如:1.0/3.0=0.33333。 3)什么是取模运算呢?在C语言中,取模运算符为%,表达式x%y是x除以y所得的余数。如果x正好能被y整除的话,那么结果是0。例如:45%5=0; 45%10=5。 取模运算要求两个操作数必须是整型数,其结果也是整数。下面这个式子在C语言中是非法的: 12.4%6.7 s*(s-a)*(s-b)*(s-c) a*b/(2*a) 5.0/9.0*(f-32) “赋值”使用最基本的运算符--赋值运算符,符号是“=”,它的作用是将一个表达式的值赋值给一个变量。例如,我们见过的“a=3“,它的作用是将常量 3 赋值给变量 a 。当然,我们也可以将一个表达式的值赋给一个变量。例如: a = b*c*d*d-34