《计算机上机课》由会员分享,可在线阅读,更多相关《计算机上机课(46页珍藏版)》请在金锄头文库上搜索。
1、C语言运算符及优先次序 优先级运算符特征1(), , .,-双目2!, , (t), +(正号), -(负号), *, =; 双目2!, , (t), +(正号), -(负号), *, =; (右移) 必须是char型、int型和它们的变体,不能用于float、 double、void或其它更复杂数据类型 位运算不改变原操作数的值位运算不改变原操作数的值移位运算ab表示将a的二进制右移b位,a2 0000110000000011 (十进制4)三种移位实现方式(与具体编译器有关):循环移位:移入的位等于移出的位逻辑移位:移出的位丢失,移入的位取0算术移位:移出的位丢失,左移入的位取0,右移入的位
2、取符号位(常用)移位运算的功能例如:a15;a=a2 0001000000000100 (十进制4) 在数据可表达的范围里,左移1位相当于乘2,左移2位 相当于乘4(无符号数),右移1位相当于除2,右移2 位相当于除4。a15;a=a10000111100000111 (十进制7)位逻辑运算ABA z=xy双目2!, , (t), +(正号), -(负号), *, =; ),小于(=),小于等于(=9);又如: AB输出为1输出为0关系运算的优先级和结合次序关系运算符,=,双目2!, , (t), +(正号), -(负号), *, =; ,=,31); 而=,!= 优先级低于前四种 例如:pr
3、intf(“%dn”, 11=111+12等价于10(1+12)输出为0输出为0练习定义ch=a; int a=2, b=3, c=1, d,x=10 ; 写出下列表达式的值: 1)ab=c; 2)d=ab; 3)chb+1; 4)d=a+bc; 5)b-1=a!=c; 6)3双目2!, , (t), +(正号), -(负号), *, =; =a 则表达式(x结果为0的表达式为() A)2%a B)a/=a C)!a D)aCC语言运算符及优先次序 优先级运算符特征1(), , .,-双目2!, , (t), +(正号), -(负号), *, =; b)?a:b优先级位于逻辑运算和赋值运算之间
4、,结合顺序由右至左 例如:ab?a:cd?c:d等价于ab?a:(cd?c:d)C语言运算符及优先次序 优先级运算符特征1(), , .,-双目2!, , (t), +(正号), -(负号), *, =; main() int x, y, z, v; printf(“input x, y and z:”); scanf(“%d%d%d”, v=x*y*z; printf(“v=%dn”, v); getch(); 开始结束输入输出v=x*y*z顺序结构程序设计举例2用临时变量交换两个变量的值 数据结构x, y, temp开始结束tempxytempxy输出main() int x, y, te
5、mp;temp=x;x=y;y=temp;printf(“x=%dny=%dn”, x, y); 顺序结构程序设计举例3任意三角形面积计算器 关键问题: area=其中:s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);# include main() float a, b, c, s, area; scanf(“%f%f%f”, s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn”, a, b, c, s); printf(“area=7.2fn”, area); getch(); 思考:三角形的三边长可以任意输入吗?思考:三角形的三边长可以任意输入吗?