版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C语言基础1目录CONTENTSC语言的数据类型常量和变量运算符与表达式数据类型转换2.12.22.32.42C语言的数据类型2.13C语言的数据类型常用编码方式和存储格式为什么要设置数据类型C语言规定的数据类型4为什么要设置数据类型?01要使计算机能够通过程序来完成特定任务,首先要解决的是数据的存储问题,包括数据的存储编码格式、存储二进制数位,不同数据之间存在的某些联系等等。C语言提供了多种数据类型,用以适应不同情况的需要。数据类型不同,它所表达的数据范围、精度和所占据的存储空间均不相同。5常用编码方式和存储格式02存储长度:在计算机中使用一定长度的存储单元(通常是字节的倍数)来存储数据。常用编码方式:原码、反码、补码、ASCII码…常用存储格式:定点型、浮点型…存取数据必须先确定数据的编码方式、存储格式和所占的存储长度,C语言中把这三者结合起来,给出几种固定的形式,这些形式就是最基本的数据类型。6C语言规定的数据类型03枚举类型(enum)数据类型基本类型构造类型指针类型(*)空类型(void)字符型(char)浮点型整型(short,int,long,unsigned)双精度(double/longdouble)单精度(float)结构体(struct)数组([])共用体(union)7常量和变量2.28常量和变量什么是常量和变量符号常量直接常量变量变量的定义及初始化9什么是常量和变量?01常量:指在程序运行中,其数值不能被改变的量常量分为直接常量和符号常量变量:指以标识符为名字,其值可以改变的量变量代表计算机内存中的某一存储空间,变量的类型决定了该存储空间的长度和其中存放数据的编码方式及存储格式。变量的类型也决定了该存储空间中存放数据的数据形式和取值范围。10C语言的常量11直接常量02整型常量浮点型常量字符型常量字符串型常量直接常量分类030104010212直接常量021、十进制形式:与数学上的整数表示相同例如:12,-100,0整型常量012、八进制形式:在数码前加数字0例如:012=1*81+2*80=10(十进制)3、十六进制形式:在数码前加0X例如:0x12=1*161+2*160=18(十进制)注意!
*
八进制的数码范围为0~7;018
*
十六进制的数码除了数字0~9外,
还使用英文字母a~f(或A~F)表示10~15。如:0x1e√13直接常量021、十进制小数形式:由数字和小数点组成例如:3.4,4.,.3浮点型常量022、指数形式:十进制小数+e(或E)+十进制数整数例如:12.5e-6
表示12.5×10-6
注意!
小数点不能单独出现;0.√.0√.
e或E的两边必须有数,且其后面必须为整数;如:6E0.2
e5
浮点型常量只能用十进制形式表示14直接常量021、用单引号括起来的一个字符例如:‘A’、
‘1’、’?’字符型常量032、用单引号括起来的由反斜杠(\)引导的转义字符例如:‘\n’、
‘\t’、’\101’、'\0x41'字符形式含义\n换行\t横向跳格(Tab)\v竖向跳格\b退格\r回车\\反斜杠\′单引号\”双引号\xhh1到2位16进制ASCII码值所代表的字符\ddd1到3位8进制ASCII码值所代表的字符注意!字符A的ASCII码为:65D(十进制)=41H(十六进制)=101Q(八进制)∴字符A可以表示为‘A’、’\x41’、’\101’15直接常量02字符串常量04字符串常量:是用一对双引号括起来的字符序列。
注意:每个字符串的后面都有一个‘\0’结束符。如:“SHANGHAI”,“AbcdeFGHijk”,“Howareyou”。16符号常量03符号常量:是用标识符来表示一个数据;在程序中不能给它赋值。
定义形式:
#define标识符常量数据例如:#definePI3.14159
在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。如:2*2.3*PI
就等价于2*2.3*3.14159。17变量04
变量是指以标识符为名字,其值可以改变的量。
变量代表计算机内存中的某一存储空间,该存储空间中存放的数据就是变量的值。
在同一程序块中,变量不能被重复定义。
使用变量时必须“先定义,后使用”。18变量04整型变量浮点型变量字符型变量基本变量分类0301010219变量04整型变量01整型变量分类根据数据所占的存储长度的不同分为:int、short、long;同样存储长度的数据又分unsigned、signed;故可组合出六种类型。整型变量的值域由机器中数据的存储长度决定标准C中,有short(2字节)≤int(2字节)≤long(4字节)
关键字
所占位数
取值范围
short16-32768~32767
int16-32768~32767long32-2147483648~2147483647unsignedshort160~65535unsigned160~65535unsignedlong32 0~42949672952021int与unsignedint互转举例int-1原码反码补码
unsignedint=215+214+……+20=32768+16384+8192+4096+2048+1024+512+256+128+64+32+16+8+4+2+1=65535100000000000000111111111111111101111111111111111变量04浮点型变量02浮点型变量的分类及值域关键字字节数取值范围精度(位)float43.4×10-38~
3.4×10386~7double81.7×10-308~
1.7×1030815~16longdouble161.7×10-4932~
1.7×10493218~1922变量04字符型变量03关键字:char
每个字符型数据在内存中占一个字节;包括ASCII字符表中的所有字符(可显示字符和非显示字符)23变量的定义及初始化05变量初始化在定义变量的同时给变量一个初始值。变量定义的语法规定可扩展为:<数据类型名><变量名>[=常量]{,<变量名>[=常量]};
例:定义形式<数据类型名><变量名>{,<变量名>};例如:inta,b,c;
floatx,y;charc1,c2;或intc1,c2;定义变量就是在内存中划出一块相应类型的存储空间存放该变量的值。自己设定,满足标识符的规定。如:int,float,char;不可省inta=5,b=3;√
inta=b=c=3;
inta,b,c;a=b=c=3;√
24程序运行结果为:
x+k=40,y+k=10
变量根据作用域的不同可分为局部变量和全局变量,根据存储方式的不同可分为静态存储变量和动态存储变量,这些我们将在后面章节中详细介绍。变量的定义及初始化05#include<stdio.h>intmain(){intx,y,z,w;
/*定义x,y,z,w为整型变量*/unsignedintk;/*定义k为无符号整型变量*/x=10;y=-20;k=30;z=x+k;w=y+k;
printf("x+k=%d,y+k=%d\n",z,w);
return0;}25运算符与表达式2.3
26运算符与表达式运算符分类关系运算符及表达式算术运算符及表达式逻辑运算符及表达式赋值运算符及表达式位运算及其他运算符27运算符分类01赋值运算符按位运算符其它运算符算术运算符关系运算符逻辑运算符关系运算符按位运算符关系运算符表达式:是由操作数和运算符组成的序列28算术运算符及表达式02 3-5 1-1 -3 3*5 ab错误 a.b错误 3/5=0 3./5=0.6 3/5.=0.6
+:加法/正号-:减法/负号*:乘法/:除法%:取余或模 3+5 1+1 +3a%b=a-n*b(a、b必须为整型,n为a/b的值)5%(-3)=5-(-1)*(-3)=2(-12)%(-5)=(-12)-2*(-5)=-2算术运算符0129随堂练1:-11%3=答案:=-11-(-3)*3=-2算术运算符及表达式02算术运算符的优先级和结合性02优先级:+(正号)-(负号)*/%+-结合性:自右向左(+正号、-负号)自左向右(*、/、%、+、-)结合性是指同级运算时运算符的结合方向。如a#b#c(#代表某一运算符)若先运算a#b,再将其结果与c运算,称为左结合性;从左至右运算规则若先运算b#c,再将a与其结果运算,则称右结合性;从右至左运算规则30算术运算符及表达式02算术表达式03
例:已知:
floata=2.0;intb=6,c=3;
求解:
a*b/c-1.5+’A’+abs(-5)=?12.0/34.0-1.52.5+65(int)67.5572.531算术运算符及表达式02自增与自减运算符(重点和难点)04++i,--i先增(减)1,再使用ii++,i--先使用i,再增(减)1(1)单独使用时++i;等价i++;等价i=i+1;(2)j=++i;(3)j=i++;若i的初始值为3i=4;j=4;i=4;j=3;注意:自增自减运算符的操作数必须为一个变量32算术运算符及表达式02自增与自减运算符(重点和难点)04结合性:自右向左分析:(1)++、--、+(正号)、-(负号)是同级运算符,结合方向:自右向左。(2)-i++等价于-(i++)(3)对于括号内的自增运算,又要先使用i,再使i增加1。优先级:第2级(单目运算)33你比他高吗?马云比王健林有钱吗?平均分及格了吗?结果是实数吗?工资是否达到个税条件?有没有重复数值?34关系运算符及表达式03关系运算符及表达式03关系运算符01<:小于,5<3,3<5<=:小于等于,5<=3,3<=5,与数学上(≤)不同>:大于,5>3,3>5>=:大于等于,5>=3,3>=5,与数学上(≥)不同==:等于,5==3,与数学上(=)不同!=:不等于,5!=3,与数学上(≠)不同35关系运算符及表达式03关系表达式02用关系运算符将表达式连接起来的式子优先级结合方向:自左向右表达式的值:关系成立,即为真,结果为1;关系不成立,即为假,结果为0;算术运算符<<=>>=高低==!=高低3603一般关系运算要求关系运算符连接的两个运算对象为同类型数据a+b>3*c两个算术表达式的值作比较(a<=b)==(b>c)两个关系表达式的值作比较你比他高吗?X>Y马云比王健林有钱吗?M<W平均分及格了吗?S>=60结果是实数吗?(INT)X!=X工资是否达到个税条件?X>5000有没有重复数值?X==A37关系运算符及表达式03男子征兵基本条件:必须年满18岁,身高168以上,高中以上学历,视力5.0以上(如硕士以上学历视力3.0以上即可)某工厂出门规则:8点以后,有出门条或安保人员判断闰年:能被4整除但是不能被100整除或者能被400整除a和b中,至少有一个是大于c38逻辑运算符及表达式04逻辑运算符及表达式04逻辑运算符01!:逻辑非,一元运算符运算规则:取反,真假,假真&&:逻辑与。又称逻辑乘。运算规则:两个操作数均为真,结果为真。||:逻辑或。又称逻辑加。运算规则:只要两个操作数有一个为真,结果为真。39逻辑运算符及表达式04逻辑表达式02用逻辑运算符将表达式连接起来的式子。优先级关系运算符高低&&逻辑与算术运算符高低!逻辑非高低高低||逻辑或结合性!:自右向左&&、||:自左向右40男子征兵基本条件:必须年满18岁,身高168以上,高中以上学历,视力5.0以上(如硕士以上学历视力3.0以上即可)age>=18&&shengao>=168&&(xueli==“gaozhong”&&shili>=5.0||shili>=3.0&&xueli==“shuoshi”)某工厂出门规则:8点以后,有出门条或安保人员time>=8&&(chumentiao==1||anbaoyuan==1)判断闰年:能被4整除但是不能被100整除或者能被400整除year%4==0&&year%100!=0||year%400==0a和b中,至少有一个是大于ca>c||b>c41逻辑运算符及表达式04逻辑运算符及表达式04特别注意:03在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。(1)a&&b&&c例:a=0;b=1;c=2;d=a++&&b++&&--c;d=(a++)&&(b++)&&(--c);运算结果:d=0,a=1,b=1,c=2求解方法:只有a为真(非0),才需要判断b的值,只有a和b都为真,才需要判断c的值。只要a为假,就不必判断b和c,运算立即中止。42逻辑运算符及表达式04(2)a||b||c求解方法:只要a为真(非0),就不必判断b和c;只有a为假,才判断b;a和b都为假,才判断c。例:a=0;b=1;c=2;d=a++||b++||--c;d=(a++)||(b++)||(--c);
运算结果:d=1,a=1,b=2,c=243赋值运算符及表达式05赋值运算符=(数学上的等号)赋值表达式语法形式:
<变量>=<表达式>求值规则:将“=”右侧表达式的值赋给左侧的变量结合性:自右至左
优先级:第14级44赋值运算符及表达式05例:分析以下各个表达式(1)x=(y=12)/4y值为12,x值为3,表达式的值为3(2)x=y=12/4y值为3,x值为3,表达式的值为3(3)(x=y)=12/4语法错误。该赋值运算符左边不是变量,而是一个表达式45赋值运算符及表达式05复合赋值运算符*=、/=、%=、+=、-=、<<=、>>=、&=、Λ=、¦=共10个,由赋值运算符与算术、位运算符组成。复合运算符是一个运算符,但功能上,是两个运算符功能的组合。例:a+=ba*=b+c随堂练1:a=2;a+=a*=a;以上语句执行结束之后,变量a的值是什么?相当于a=a+b相当于a=a*(b+c)优先级、结合性与赋值符相同46位运算符0647&(按位与运算符)运算规则:两个二进制位都为1时,结果才为1。|(按位或运算符)运算规则:两个二进制位都为0时,结果才为0。^(按位异或运算符)运算规则:两个二进制位相同为0,相异为1。~(按位取反运算符)运算规则:二进制位由0变1,1变0。<<(左移运算符)运算规则:各二进制位全部左移若干位,高位丢弃,低位补0。>>(右移运算符)运算规则:各二进制位全部右移若干位无符号数,高位补0;有符号数,各编译器的处理方法不一样,有的补符号位的值(算术右移),有的直接补0(逻辑右移)。48(1)~3=-4D3D=00000011B=1111110010000011+1=10000100=-4(2)3&5=1D00000011B
00000001B(3)3^5=6D该表达式的计算过程如下:
00000011B^00000101B
00000110B转十进制有符号数&00000101B例:测试代码#include<stdio.h>intmain(){intnum=3,result;result=~num;//按位取反
printf("~3的结果:%d\n",result);return0;}49(4)3|5=7D该表达式的计算过程如下:
00000011B|00000101B
00000111B(5)5<<25D二进制补码:00000101B左移两位,高位丢弃两位,低位补两个0得到结果:00010100所以,表达式5<<2的值为20。(6)5>>25D二进制补码:00000101B右移两位,低位丢弃两位,高位补两个0(假设采用算术右移)得到结果:00000001所以,表达式5>>2的值为1。其它运算符07语法形式:子表达式1,子表达式2,…,子表达式n求值规则:从左至右依次计算各子表达式的值优先级:最低结合性:自左至右(左结合性)表达式的值:最后一个子表达式的值。1、逗号运算符及逗号表达式50其它运算符例4:
表达式
aby
y=a=4,b=5,a+b;454y=(a=4,b=5,a+b);459y=(a=4,b=5),a+b;455
1、逗号运算符及逗号表达式5107形式:sizeof变量名sizeof(类型名/变量名)功能:求变量或某种数据类型所需的字节数。运算结果:整型数结合性:自右至左(右结合性)
优先级:第2级(单目运算)2、sizeof运算符其它运算符5207其它运算符2、长度运算符sizeof5307
例2.4海纳百川,有容乃大——sizeof运算符的使用 #include<stdio.h> intmain() {shorta;floatb;doublec; printf("a=%d,b=%d\n",sizeof(a),sizeof(b)); printf("c=%d\n",sizeofc); //sizeof后面跟变量名时,变量名外括号可以省略 printf("a=%d,b=%d\n",sizeof(short),sizeof(float)); printf("c=%d\n",sizeof(double));//sizeof后面跟类型名时,类型名必须用括号括起来 return0;
}用大模型了解海纳百川,有容乃大其它运算符3、条件运算符优先级:算术>逻辑>条件
>赋值>逗号结合性:
自右至左C语言中唯一的一个三目运算符5407其它运算符3、条件运算符有两个符号:?、:,它与三个操作数组成三元运算。一般形式:<表达式1>?<表达式2>:<表达式3>求值规则和表达式的值:求解表达式1真(非0)求解表达式2假(0)求解表达式3表达式的值5507x=a
>=0?a∶-a该表达式其实质上是一个赋值表达式,由于条件运算符的优先级别高于赋值运算符,所以将先进行条件表达式的运算,再进行赋值表达式的运算。该表达式运算的意义是,若a>0,将a的值赋给x;否则,将-a的值赋给x。56其它运算符063、条件运算符57当多个条件表达式嵌套使用时,每个后续的“:“总是与前面最近且没有配对的“?“相联系。例如:a>b?a:c>d?c:d相当于:a>b?a:(c>d?c:d)如果a=6、b=8、c=12、d=24,则条件表达式的值。3、条件运算符——条件表达式嵌套07其它运算符其它运算符3、条件运算符——特别说明条件表达式中的表达式2和表达式3可以是数值表达式、赋值表达式或函数表达式;如:
max=a>b?(a=5):b;a>b?printf(“a大于b”):printf(“a不大于b”);右结合性a>b?a>=c?a:c:b>=c?b:c等价于
a>b?(a>=c?a:c):(b>=c?b:c)表达式1和表达式2、表达式3的类型不同时,条件表达式的类型为后者类型中较高的类型。如:
5?'x':'y'表达式类型为字符型
a>b?4.5:6表达式类型为浮点型
4.5或6.05807
inta,b; a=3; b=!++a?a*2:a*3; printf("%d,%d\n",a,b); a=a?++a:++b; printf("%d,%d\n",a,b); printf("%d\n",a==a?a+5:b-1?a+1:b+2);输出结果为:4,125,121059其它运算符举例07数据类型转换2.4
60数据类型转换赋值转换自动转换强制类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建龙岩市上杭县庐丰卫生院招聘一体化乡村医生1人参考笔试题库附答案解析
- 深度解析(2026)《GBT 26904-2020桃贮藏技术规程》
- 2025广东肇庆市德庆县教育局所属公办幼儿园招聘合同制工作人员26人考试参考试题及答案解析
- 2025江苏南通市崇川区区属国有企业下属控股公司招聘8人备考笔试试题及答案解析
- 深度解析(2026)《GBT 25905.2-2010信息技术 通 用多八位编码字符集 锡伯文、满文名义字符、显现字符与合体字 32点阵字型 第2部分:正黑体》
- 深度解析(2026)《GBT 25896.1-2010深度解析(2026)《设备用图形符号 起重机 第1部分:通 用符号》》
- 深度解析(2026)《GBT 25892.4-2010信息技术 维吾尔文、哈萨克文、柯尔克孜文编码字符集 32点阵字型 第4部分:库非黑体》
- 2025上海生物技术学院招聘生物技术学院课题组动物实验研究助理岗位1人备考笔试试题及答案解析
- 2025陕西西咸新区空港第一学校就业见习招聘8人参考笔试题库附答案解析
- 2025广东佛山市南海区国有资产监督管理局财务总监招聘1人备考笔试题库及答案解析
- 2025年保密试题问答题及答案
- 建设工程工程量清单计价标准(2024版)
- 代建项目管理流程与责任分工
- cnc刀具刀具管理办法
- DB14∕T 3069-2024 放射治疗模拟定位技术规范
- 如何培养孩子深度专注
- 2024年餐饮店长年度工作总结
- 护理8S管理汇报
- 产前筛查标本采集与管理制度
- 2025劳动合同书(上海市人力资源和社会保障局监制)
- 药膳餐厅创新创业计划书
评论
0/150
提交评论