230 likes | 372 Views
C 语言程序设计. 视频课程. 讲师:成少雷. 概述. 一 、赋值运算符. 三 、逻辑运算符. 二 、关系运算符. 四 、条件运算符. 赋值运算符. 赋值运算符: 简单赋值 (=) 复合赋值运算符 复合算术赋值 (+=,-=,*=,/=,%=) 复合位运算赋值 (&=,|=,^=,>>=,<<=). 简单赋值运算符. 简单赋值 使用形式 含义:将右操作数的值赋给左操作数 优先级:倒数第二,仅高于逗号运算符 结合性:从右向左 注意: 左操作数必须为 可修改的左值 赋值表达式的 值为左操作数的值
E N D
C语言程序设计 视频课程 讲师:成少雷
概述 一、赋值运算符 三、逻辑运算符 二、关系运算符 四、条件运算符
赋值运算符 • 赋值运算符: • 简单赋值(=) • 复合赋值运算符 • 复合算术赋值(+=,-=,*=,/=,%=) • 复合位运算赋值(&=,|=,^=,>>=,<<=)
简单赋值运算符 • 简单赋值 • 使用形式 • 含义:将右操作数的值赋给左操作数 • 优先级:倒数第二,仅高于逗号运算符 • 结合性:从右向左 • 注意: • 左操作数必须为可修改的左值 • 赋值表达式的值为左操作数的值 • 如果右操作数类型和左操作数不同 则将右操作数转换成左操作数类型 再赋值。 左操作数 = 右操作数 int a = 0,b = 5; double c = 2.5; b = a + 5; b+1 = a; 5 = b; a = c ;
复合赋值运算符 • 复合赋值(op=) • 使用形式: • 等价形式: • 示例 • 已知int a = 1, b =4, c = 6;请计算下列表达式的值,并给出计算后a,b,c的值。 • a = b = c = 2; • b /= a + 1; • c+= c -= b *= c 左操作数 op= 右操作数 左操作数 =左操作数 op (右操作数)
概述 一、赋值运算符 三、逻辑运算符 二、关系运算符 四、条件运算符
关系运算符和关系表达式 • 关系运算 比较的哲学 豹子 斑马 VS
关系运算符 • 书写的时候运算符>=、<=、!=、==中间不能有空格,否则会犯语法错误;
关系表达式 • 关系表达式的值为逻辑值,即“真”或“假” • 关系表达式为真则值为1,否则值为0; • C99中新增了一个布尔类型_Bool,布尔变量只有两个值,真(1),假(0); • 示例: 设有int a=3,b=2,c=1,d=0;请分析下面表达式的值 • a==b>c • d==a>b+c • d=a>b+c • a<b<c • a<b == c<d
使用简单的判断 • 简单的判断语句格式为: • 含义:如果表达式的值为真则执行花括号里的语句。 • 良好风格: • 花括号中的语句要缩进; • 小括号里不能有分号。 /*判断 x 是否为负数*/ if(x < 0) { printf(“x is negative\n”); } if (表达式) { 语句; } /*判断整数x是否为奇数*/ if(x %2!=0 ) printf(“x is odd\n”); /* 实数判等*/ double x; …… if(fabs(x-10.0) < FLT_EPSILON) printf(“x is zero\n”);
找别扭 • 一定要分清=和== • 下面的写法能起点作用 • inta = 1;if (a = 0)printf("OK"); • int a=0;if (a = 0)printf("OK"); • inta = 1;if (a == 0)printf("OK"); • int a=0;if (a == 0)printf("OK"); 编译出错 • inta = 0;if (0 == a)printf("OK"); • inta = 0;if (0 = a)printf("OK");
概述 一、赋值运算符 三、逻辑运算符 二、关系运算符 四、条件运算符
逻辑运算 计算机系女生征友的告示 征友告示 凡追我者,请先看以下条件,判断自已是否符合条件,符合条件者,方可得以见本小姐一面: • a= 富和盖茨有一比; • b = 帅胜德华留三分; • 逻辑运算中逻辑二字指的是指表达式之间的连接方式(与、或、非),一般使用逻辑运算将多个关系运算结合起来构成复杂条件。
逻辑运算符 • 逻辑运算符:与(&&)、或(||)、非(!) • 优先级:非(!) > 与(&&) >或 (||) • 结合性 非(右结合);与和或(左结合) • 运算规则 • 在逻辑运算中,0为假,非0为真
逻辑表达式 • 通过逻辑运算符连接的表达式,被称为逻辑表达式。 • 逻辑运算的结果1表示逻辑真,0表示逻辑假。 • 短路计算 • 在表达式a&&b中,如果表达式a为0,则不计算右操作数b • 在表达式a||b中,如果表达式a为1,则不计算右操作数b 已知: int a=1, b=0, c = 4;请计算下列表达式的值 (1) a || b && 0 (2) !a && (5>3)||b (3) a && b && c (4) a>c && b == c
课堂练习 • a介于1和5之间但不等于3; • a不在1和9之间; • 变量score1、score2中存放着两个成绩,用关系表达式和逻辑运算符表示“两个成绩全都及格”、“两个成绩中有及格成绩”、“第一个成绩不及格”; • 写出判断字符变量ch的值是否为小写字母的表达式; • 实型变量x1和x2中存放着两门课程的成绩,写出判断其中有一门成绩等于90的表达式 • 设整型变量 year表示任意年份,请判断该年是否是闰年。
概述 一、赋值运算符 三、逻辑运算符 二、关系运算符 四、条件运算符
条件运算符 • 条件运算符(?:) • 一般形式:操作数1?操作数2:操作数3 • 运算过程: • 对操作数1求值。 • 若操作数1的结果非0,则对操作数2求值(不需要对操作数3 进行求值),并将该值作为条件表达式的最终结果。 • 若操作数1的结果为0,则只需对操作数3求值(而不需要对操作数2进行求值),并将该值作为条件表达式的结果。 • 设有int a = 3, b = 4, c; 试分析语句c = a > b ? a : b;执行后,c 的值?
动手练习 • 编写一个程序,任意输入三个数,输出三个数中最大的。 #include <stdio.h> #include <stdlib.h> int main(void) { inta,b,c; int max; printf("请输入三个数:"); scanf("%d%d%d",&a,&b,&c); max = a>b?a:b; max = max > c?max:c; printf("三个数中最大的是:%d\n",max); system("pause"); return 0; }
小结 1 2 3 3 4 4 5 赋值运算符 关系运算符 逻辑运算符 条件运算符