第03讲 数据类型、运算符和表达式
*1Program Design in C LanguagePage 基本运算符及其表达式第三讲第二章 数据类型、运算符和表达式*2Program Design in C LanguagePage24 基本运算符及其表达式算术运算符赋值运算符逗号运算符逻辑运算符条件运算符求字节运算符位逻辑运算符位移动运算符位自反运算符强制类型转换运算符指针运算符下标运算符分量运算符基本运算符位运算符特殊运算符C运算符关系运算符*3Program Design in C LanguagePage24 基本运算符及其表达式2.4.1 算术运算符与算术表达式 1.基本算术运算符右结合2+正 右结合2-负左结合3/除 左结合3%取模344优先级左结合*乘左结合-减左结合+加结合性运算符含义例: 19/5 结果为3 (整数相除截去余数) 22%4 结果为2 (取模运算返回余数)*4Program Design in C LanguagePage24 基本运算符及其表达式2.自增自减运算符 含义 运算符优先级结合性功能 自增+2右结合 使变量的值增1 自减-2右结合 使变量的值减1 使用形式 +i或-i 变量i先自增或自减1,再使用。 i+或i- 先使用变量i,再自增或自减1。 int i=6, a, b;a=+i; b=i+;printf(“%dn%dn“, a, b);a=-i; b=i-; printf(“%dn%dn“, a, b);printf(“%dn“, -i+);printf(“i=%dn“, i);例 :7 7 7 7 -6i = ?*5Program Design in C LanguagePage当表达式中有多个运算符相连时,应自左而右地将若干个字符组成一个运算符。24 基本运算符及其表达式#include void main( )int i, j, k ;i=1;j=1;k=i+j ;printf(“i=%d,j=%d,k=%dn“,i,j,k); 例:k=(i+)+j;i=2,j=1,k=2*6Program Design in C LanguagePage3 算术表达式由算术运算符和括号将运算对象(常量、变量、函数 等)连接起来的式子。 (a+b)/(c+d)sqrt(a)+sqrt(b)x+y-z例:说明: 表达式的求值顺序:先按运算符的优先级执行,当一个运 算对象两侧的运算符优先级别相同时,则按结合性处理。24 基本运算符及其表达式2(a+b) 2*(a+b)*7Program Design in C LanguagePage24 基本运算符及其表达式2.4.2 关系运算符与关系表达式关系运算(比较运算) 即比较两个量的大小,比较的结果为“真”或“假”。 例:a>3如果a=8,则结果为“真”;如果a=1,则结果为“假” 。1.关系运算符 含义运算符 优先级结合性 小于6左结合 大于等于>=6左结合 等于=7左结合 不等于!=7左结合*8Program Design in C LanguagePage2.关系表达式 用关系运算符将运算对象连接起来的式子。24 基本运算符及其表达式一般形式:其中:运算对象1和运算对象2可以是常量、变量或表达式。a>b m+nz)=(y>z) i>j>k例:*9Program Design in C LanguagePageC语言没有逻辑型数据。因此,在返回逻辑值时: 用1表示“真”,用0表示“假”;在判断逻辑值时: 用非0代表“真”,用0代表“假”。24 基本运算符及其表达式例: #include void main()int a=18,b=17,c=16;printf(“%d,%d,%dn“,ac,a>b>c); 0,1,0*10Program Design in C LanguagePage2.4.3 逻辑运算符与逻辑表达式 关系表达式只能表达一些简单的关系,如: sum>=1500y!=z 即只能对一个条件进行测试。 而以下关系:20x100 则不能用关系表达式表达。逻辑非!真值表1.逻辑运算符 含义运算符 优先级结合性 逻辑非!2右结合 逻辑与一般形式: ?:*14Program Design in C LanguagePage赋值运算符优先级为14,仅高于逗号运算符。2.4.5 赋值运算符与赋值表达式简单赋值运算符为“=”;由“=”连接的式子称为简单赋值表达式。一般形式:=1简单赋值运算符和简单赋值表达式d=25 c=a+b z=sqrt(x)+sqrt(y) k=i+-j x=(a=5)+(b=8)例:赋值运算符为右结合性a=b=c=d=10 a=(b=(c=(d=10)24 基本运算符及其表达式*15Program Design in C LanguagePage赋值运算的类型转换,规则为:整型数据赋给字符型变量时,只把低八位赋给字符变量 。字符型数据赋给整型变量时,整型变量的高位字节补 0,低八位取字符的ASCII码值。整型数据赋给实型变量时,以浮点形式取值。实型数据赋给整型变量时,只取整数部分。 如: k=8.88 (k值为8)如: f=15 (f值为15.000000)如: k='A' (k值为65)如: c=578 (c值为字母B)24 基本运算符及其表达式*16Program Design in C LanguagePage2复合赋值运算符和复合赋值表达式复合赋值运算符是在简单赋值运算符前加双目运算符构成。 共以下10种:+=,-=,*=,/=,%=,>=,y=(c=a*b),(b+c);printf(“y=%dn“,y); 例:y=12程序中并非所有的逗号都是 逗号运算符。 如: int a=2,b=4,c=6,x,y; printf(“y=%d,x=%d“,y,x); /* 分隔符 */*18Program Design in C LanguagePage上机实验内容:实验教程第二章实验12。