资源描述
第二章 运算符与表达式 1 表达式 三个问题: 1.运算符运算次序 (求值 ) 2.表达式的书写 3.表达式的类型转换 C语言是一种表达式语言 , 任何表达式后跟“;”都是语 句 . 一 表达式 表达式是由运算对象 ( 常量 , 变量 , 函数 ) 与运算 符 组成的有意义的式子 。 例: 代数式 表达式 4 ab ec f ( a + b ) / ( c e / (4 * f ) ) s in 4 1x sqrt( x ) + sin( 41 * 3.14159 / 180 ) 1 5 ln 3yx pow( y, 1/5 ) + log ( 3 * x ) 0,1x ( c = 0 ) 注: 1.一个表达式书写只能占一行 。 层次性通过加圆括号体现 。 2.任何表达式计算的结果只能是一个值 , 且其值的类型就是 表达式的类型 。 3.常量,变量,有返回值的函数调用等都可视为简单表达式 。 表达式的分类(按运算符分类) 算术表达式 关系表达式 逻辑表达式 赋值表达式 条件表达式 逗号表达式 位运算表达式 表达式的求值由运算符的功能和运算符优先级与结合 性决定的。 二 .运算符与优先级及结合性 算术运算符: +, , *, /, %, +, 关系运算符: , =, int unsigned long unsigned long float double long double 例: int i; char c; long p; double d; short s; float f; unsigned u; c s / i /*表达式类型为 int */ u * 3 i /*表达式类型为 unsigned */ u * 3.0 i /*表达式类型为 double */ f * 3 i /* 表达式类型为 float */ c + 1 /*表达式类型为 int */ 3 * s * p /*表达式类型为 long */ 赋值号两边类型不同时 , 将右边的类型转换成左边类型 ( 不受上面规则的约束 ) 右边类型 左边类型 float int 截去小数部分 ( 降格 ) double float 四舍五入 ( 降格 ) int float 小数部分均为 ( 降格 ) int char 丢掉高出位 ( 降格 ) long int 丢掉高出位 (与机器有关 )( 降格 ) )强制类型(显式)转换 一般形式: ( 类型名 ) ( 表达式 ) 例: ( char) ( 3 3.14 * x ) /* 表达式类型为 char */ (float) i + 3 /* 表达式类型为 float 原 i类型不变 */ 注:被强制转换的变量类型不发生变化 二 赋值运算及复合赋值运算 赋值运算符: 复合赋值运算符: , =, , , , , x != x y x != ( x+y ) 结果为 = x ( 右移 ) , ( 左移 ) ) .在逗号表达式中作逗号运算符 逗号表达式: e1,e2 逗号表达式的值和类型取自最右边表达式的值和类型 , 且从左向右结合运算 。 例: int a,b; char c; a = 1, b = 2, c = 3; /* 逗号表达式 , 其结果为 , 类型为字符型 例:(,)(,) /* 结果为 */ 练习题 将下列数学式写成语言的表达式 已知变量说明如下 char c = a; int a =3, b=4 , d=-7; double x=1.8,y=3.15; 求下列表达式的值: ) a%b+c/a/b ) a+1c ) a+/+d -b ) x+x != x y ) a!=b & x=y ) !x | !y = = 0 * * 2 2 21 ) . ( )a b y 52 ). 6 5 b a cd b 4 ) . 1 s in 4 8 3 02 52 10 3 ) . 1 2 yx 5 ) . 1 , 2x
展开阅读全文