




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
运算符和表达式运算符和表达式概述运算符和运算对象的关系。单目运算符:-5双目运算符:a+b三目运算符:a?b:c运算符具有优先级和结合方向。一个运算对象的两边有不同的运算符,首先执行优先级别较高的运算。例:a+b*c如果一个运算对象两边的运算符级别相同,则应按由左向右的方向。例:a+b+c算术运算符和算术表达式+(加)-(减)*(乘)/(除)%(整除求余)高低算术运算符属双目运算符,结合方向自左至右。算术运算符优先级:*/%+-关于%运算符:两个操作数为整型,其结果为余数5%3=2 5%2=13%5=? 2%5=?运算所得结果的符号与运算符左侧操作数的符号相同-4%3=-14%(-3)=11+2=? 4/3=? ¾=?1+2=3 4/3=1 ¾=01+0.2=? 4.0/3=?1+0.2=1.2 4.0/3=1.333333转换规律是低类型向高类型转换doublefloat高
longunsigned低
intchar,short各类数值型数据间混合运算一般形式为:(类型名)(表达式)#include<stdio.h>intmain(void){doublex=3.6,y;inti=(int)x,j;y=i/5;j=i/5;printf(“x=%f,y=%f\n”,x,y);printf(“i=%d,j=%d\n”,i,j);return(0);}运行结果为:x=3.600000,y=0.000000i=3,j=0强制类型转换运算符能将一个表达式的值转换成所需的数据类型-∞-4–3034+∞-3.53.2向零靠拢原则
算术运算符和算术表达式#include<stdio.h>intmain(void){inta,b;floatc;scanf(“%d,%d,%f”,&a,&b,&c);printf(“a+b=%d\n”,a+b);printf(“a-b=%d\n”,a-b);printf(“a/c=%f\n”,a/c);printf(“a%%c=%d\n”,a%(int)c);return(0);}两个“%%”表示输出一个“%”
a+b=5a-b=-1a/c=0.500000a%c=2若输入为2,3,4.0则输出为多少?求解一元二次方程10x2+600x+5=0的两个实根。#include<stdio.h>#include<math.h> intmain(void){inta,b,c; floatroot1,root2; a=10;b=600;c=5; printf("ROOT1=%f,ROOT2=%f\n",root1,root2);return(0);}root1=(-b+sqrt(b*b-4*a*c))/(2*a);root2=(-b-sqrt(b*b-4*a*c))/(2*a);关系运算符和关系表达式C语言提供了六种关系运算符:
<、>、<=、>=
优先级高
==、!=
优先级低关系运算符属双目运算符,结合方向自左至右。关系运算结果只能是:0(代表假),1(代表真)例如:intx=3,y=5;x>y的结果为0,即为“假”。逻辑运算符和逻辑表达式三种逻辑运算符:&&(逻辑与)、||(逻辑或)双目运算符 低!(逻辑非) 单目运算符 高逻辑运算符具有自左至右的结合性。逻辑运算结果只能是:0(代表假),1(代表真)C语言中没有逻辑值,用0代表假,非零值代表真逻辑运算符和逻辑表达式三种逻辑操作
ab!a!ba&&ba||b
非零非零0011
非零零0101
零非零1001
零零1100逻辑运算符和逻辑表达式&&:从左向右运算,只要其中某一表达式的值为“假”,整个表达式的值为假,其后表达式不再运算。inta=5,b=5,c=5;!a&&(b=a+c)&&c; ||:从左向右运算,只要其中某一表达式的值为“真”,整个表达式的值为真,其后表达式不再运算。inta=5,b=5,c=5;a||(b=b+1)||(c=a+b); 运行结果:
1
a1=5,b1=5,c1=4
1
a1=5,b1=7,c1=4#include<stdio.h>intmain(void){inta=5,b=5,c=4;
a||(b=a+c)&&c;
printf("\n%d",a||(b=a+c)&&c);printf("\na1=%d,b1=%d,c1=%d",a,b,c);
a&&(b=b+1)||(c=b+1);printf("\n%d",a&&(b=b+1)||(c=b+1));printf("\na2=%d,b2=%d,c2=%d\n",a,b,c);return(0);}逻辑运算符和逻辑表达式优先级关系算术、逻辑和关系运算符三者间的优先级关系为:
!→算术运算符→关系运算符→&&,||
(高)(低)用逻辑运算符将关系表达式或任意数据类型(除void外)的数据连接起来就构成了逻辑表达式。逻辑表达式的结果为0或1。注意:C语言中不允许两个关系运算符连用,必须用逻辑符连接。例1:表示一个两位数x10<=x<=99 ×(x>=10)&&(x<=99)
√例2:表示一个字母ch(注意有大小写两种字母)
((ch>=‘a’)&&(ch<=‘z’))||((ch>=‘A’)&&(ch<=‘Z’))赋值运算符和赋值表达式赋值运算符“=”的作用是将一个数据赋给一个变量,赋值运算符的左边不能是一个表达式,只能是一个变量。例如:
x+y=3;z=x+y;赋值运算符和赋值表达式复合的赋值运算符是在赋值符“=”之前加上其他运算符构成的。例如:
a+=b等价于a=a+b
x*=y+z等价于x=x*(y+z)x%=y等价于x=x%yC语言可以使用的10种复合赋值运算符有:+=、-=、*=、/=、%=<<=、>>=、&=、|=、=赋值运算符和赋值表达式赋值表达式的结合方向是自右至左的例:a+=a*=a=2a=2a=2a*=2a=a*2=2*2=4a+=4a=a+4=4+4=8a的值为8①②③赋值运算符和赋值表达式#include<stdio.h>intmain(void){intx=2;x+=x-=x*x;/*结合性是自右至左*/printf(“x=%d\n”,x);return(0);}1.x=x-x*x=-22.x=x+(-2)=-4运行结果:x=-4自增运算符和自减运算符“++”和“--”运算符都是单目运算符,其运算对象只能是整型变量、实型和指针变量。它们既可以放在运算对象的变量前面,也可以放在运算对象的变量后面。放在前面表示先自增再使用运算对象的变量放在后面表示先使用运算对象的变量再自增自增运算符和自减运算符例如:i=3i=3jj=++i 4 4j=i++43j=--i22j=i--23自增运算符和自减运算符#include<stdio.h>intmain(void){intx=100;printf(“%d,%d,%d,%d\n”,x++,x,--x,x);printf(“%d\n”,x);return(0);}/*printf的输出表列运算是自右至左*/
运行结果:99,99,99,100100逗号运算符及其表达式逗号运算符优先级最低,结合性是自左至右格式:<表达式1>,<表达式2>,…<表达式n>先计算<表达式1>的值,再计算<表达式2>的值,……而逗号表达式值是最后一个<表达式n>的值。逗号运算符及其表达式#include<stdio.h>intmain(void){inta,b,c;a=1,b=2,c=3;printf(“%d,%d,%d\n”,a,b,c);printf(“%d,%d,%d\n”,(a,b,c),b,c);a=(c=0,c+5);b=(c=10,c+8);printf(“%d,%d,%d\n”,a,b,c);return(0);}该处a,b,c不是逗号表达式,是printf函数的参数(a,b,c)是逗号表达式运行结果:1,2,33,2,35,18,10逗号运算符及其表达式#include<stdio.h>intmain(void){inta,b=1,x,y;x=(a=3,6*b); y=a=3,6*b; printf("X=%d\tY=%d\n",x,y);return(0);}运行结果:X=6 Y=3位运算位运算是对计算机硬件存储器进行直接操作的运算符。位运算是对二进制位进行操作的运算符。位运算的操作对象只能是各种整型(char、int、unsinged、long)数据。(1)位与(&)运算 x=01010101 & y=01011010 01010000
即x&y=0x50(2)位或(|)运算 x=01010101 | y=01011010 01011111
即x&y=0x5f(3)位异或(^)运算 x=01010101 ^ y=01011010 00001111
即x^y=0x0f(4)位反(~)运算
~ y=01011010 10100101
即~y=0xa5位运算移位运算(1)左移位(<<) x=01011010<<2 01101000
即x<<2=0x68(2)右移位(>>) x=01011010>>4
00000101
即x>>4=0x05位运算位赋值运算位运算与赋值运算组成复合的位赋值运算。 &= 位与赋值 a&=b a=a&b |= 位或赋值 a|=b a=a|b ^= 位异或赋值 a^=b a=a^b >>= 右移赋值 a>>=b a=a>>b <<= 左移赋值 a<<=b a=a<<b条件运算符及其表达式例:键入三个整数,输出最大数。#include<stdio.h>intmain(void){inta,b,c,max;scanf(“%d,%d,%d”,&a,&b,&c);max=(a>b)?a:b;max=(max>c)?max:c;
printf(“max=%d\n”,max);return(0);}求长度运算符sizeof#include<stdio.h>intmain(void){inta,b,c,d;a=sizeof(d); b=sizeof(float);c=sizeof(char); printf("A=%d,B=%d,C=%d\n",a,b,c);return(0);}运行结果:A=4,B=4,C=1printf函数(格式输出函数)格式:printf(格式控制,输出表列)功能:首先计算各表达式的值(自右向左),各表达式的值按格式控制串的格式,输出在屏幕上;非格式控制符照原样输出。#include<stdio.h>intmain(void){inta=8086;floatb=2000.0521;printf(“a=%3d\n”,a);printf(“a=%5d\n”,a);printf(“a=%10d\n”,a);printf(“b=%7.2f\n”,b);printf(“b=%-10.4f\n”,b);printf(“b=%f\n”,b);printf(“b=%e\n”,b);return(0);}运行结果:
a=8086a=8086a=8086b=2000.05b=2000.0521_b=2000.052100b=2.000052e+003printf函数(格式输出函数)#include<stdio.h>intmain(void){charc1=‘*’;printf(“%c%5c\n”,c1,c1);printf(“%2c%3c\n”,c1,c1);printf(“%3c%c\n”,c1,c1);return(0);}运行结果:******printf函数(格式输出函数)#include<stdio.h>intmain(void){printf(“%-10.5s\n”,”CHINAABC”);printf(“%10.5s\n”,”CHINAABC”);printf(“%5s\n”,”CHINAABC”);/*域宽小,字串照原样输出*/return(0);}运行结果:
CHINACHINACHINAABCscanf函数(格式输入函数)格式:scanf(格式控制,地址表列)功能:等待从键盘按格式控制串的格式输入相应类型的多个数据,并将这些数据依次赋给相应变量;非格式控制符应照原样输入。
scanf函数(格式输入函数)#include<st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广东职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年广东创新科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年定西师范高等专科学校高职单招(数学)历年真题考点含答案解析
- 幼儿园项目课程教学
- 2025年天津城市建设管理职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- AM培训课件教学课件
- 18204标准培训课件
- 16吨吊车培训课件图片
- 工作总结工作汇报170
- 纤维支气管镜操作
- 区域医学检测中心的建设与管理V3
- 未成年人权益保护培训
- 技能竞赛(电工电气设备赛项)备考试题库(含答案)
- 2020年全国II卷英语高考真题试题(答案+解析)
- 物理学家杨振宁课件
- 脑洞大开背后的创新思维学习通超星期末考试答案章节答案2024年
- 语法填空难题练习8篇(附答案)
- 撤销自助银行的批复
- 支持企业建设中试平台实施方案
- 《蜀相》教案 统编版高中语文选择性必修下册
- 《永远永远爱你》
评论
0/150
提交评论