C语言数据类型_第1页
C语言数据类型_第2页
C语言数据类型_第3页
C语言数据类型_第4页
C语言数据类型_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1C语言数据类型第二章数据类型、运算符和表达式内容提要数据类型常量与变量运算符与表达式第1页/共62页2.1数据类型数据类型总表双精度型double单精度型float短整型shortC数据类型基本类型指针类型空类型void字符类型char整型实型聚合类型枚举类型enum数组结构体struct共用体union长整型long整型int数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作第2页/共62页类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned

int0~65535320~4294967295unsigned

longunsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255说明:数据类型所占字节数随机器硬件不同而不同,

上表以IBMPC机为例。基本数据类型2.1数据类型第3页/共62页2.2

常量与变量数据是程序的处理对象C语言将数据分为常量与变量第4页/共62页2.2.1常量1.常量的定义及分类定义:程序运行的过程中,其值不能改变的量。分类:整型常量实型常量字符常量字符串常量符号常量2.2

常量与变量第5页/共62页2.整型常量(既整常数)三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff

转换成十进制数的方法:0123=1x82+2x81+3x80=(83)100x123=1x162+2x161+3x160=(291)100Xff=15x161+15x160=(255)102.2

常量与变量第6页/共62页整型常量的说明(1)空白字符不可以出现在整数数字之间(2)根据其值所在范围确定其数据类型(3)在整常量后加字母l或L,认为它是

longint型常量例如

30000为int型65536

为longint型

79L、012L

为longint

型2.2

常量与变量第7页/共62页3.实型常量实常数或浮点数,是一个十进制表示的符号实数表示形式:十进制小数形式

[digits].[digits]如0.123,.123,123.0,0.0,123.指数形式(包括整数部分、尾数部分和指数部分)

[digits][.digits][E|e[+|-]digits]

小数点之前是整数部分,小数点之后是尾数部分,小数点在没有尾数时可省略。

如12.3e3,123E22.2

常量与变量第8页/共62页实型常量的说明(1)实型常量采用十进制小数形式表示时,必须有小数点。例如:123.是实型常量,而123是整型常量(2)采用指数形式表示时,在E或e之前必须要有数字,且之后的指数必须为整数。例如:E6、.e6、e等都是不合法的(3)实型常量的整数部分为0时可以省略,如下形式是允许的:.57,.0075e2,-.125,-.175E-2(4)所有的实型常量均被看作是双精度类型(double)2.2

常量与变量第9页/共62页4.字符常量定义:用单引号括起来的单个普通字符或转义字符。分为一般字符常量和特殊字符常量一般字符常量:如’a’、’9’、’!’等。单引号只起定界作用并不表示字符本身,中间的字符可以是除单引号(’)和反斜杠(\)以外的数字、字母等C语言字符集中包含的所有可显示字符。特殊字符常量(也叫转义字符)是C语言中表示字符的一种特殊形式,其含义为将反斜杠(\)后面的字符转换成另外的意义。2.2

常量与变量第10页/共62页字符常量的值:该字符的ASCII码值如‘A’——65,‘a’——97,

‘0’——48,‘\n’——10转义字符及其含义:<转义字符含义\n\v\r\a\‘\ddd\t\b\f\\\“\xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符2.2

常量与变量第11页/共62页aaa13如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\060’-----------’0’例转义字符举例

intmain(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}运行结果:(屏幕显示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’2.2

常量与变量第12页/共62页字符常量与字符串常量不同5.字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中a

a\0例‘a’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;2.2

常量与变量第13页/共62页6.符号常量

(1)标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知义不宜混淆如1与l,o与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b2.2

常量与变量第14页/共62页

在C语言中,允许将程序中的常量定义为一个标识符,称为符号常量。在使用符号常量前必须先加以定义,一般情况下,符号常量使用大写英文字母表示。其定义的一般形式为:#define<符号常量名><常量>例如:#definePRICE352.2

常量与变量第15页/共62页2.2.2变量概念:其值可以改变的量变量名与变量值变量定义的一般格式:数据类型变量1[,变量2,…,变量n];变量初始化:定义时赋初值变量的使用:先定义,后使用变量值3a变量名存储单元决定分配字节数和数的表示范围合法标识符例:inta,b,c;floatdata;例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;

intx=y=z=1;╳main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}变量定义main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}2.2

常量与变量第16页/共62页编译程序根据变量定义为其分配指定字节的内存单元…...地址inta=1,b=-3,c;abc2字节2字节2字节地址地址…...内存1-3随机数变量定义位置:一般放在函数开头2.2

常量与变量第17页/共62页

与常量类似,变量也有不同的类型,一般可以分为以下三种类型:整型变量实型变量字符变量2.2

常量与变量第18页/共62页1.整型变量

(1)整型变量的分类

基本型短整型长整型无符号整型基本型:类型说明符为int,在内存中占2个字节。短整型:类型说明符为shortint或short,所占字节和取值范围均与基本型相同。长整型:类型说明符为longint或long,在内存中占4个字节。无符号整型:类型说明符为unsigned。ⅰ.无符号基本型:类型说明符为 unsignedint或unsigned。ⅱ.无符号短整型:类型说明符为 unsignedshort。ⅲ.无符号长整型:类型说明符为 unsignedlong。2.2

常量与变量第19页/共62页例2-1整型变量的使用#include<stdio.h>intmain(){intx,y,z;x=10;y=20;z=x+y;printf(“x+y=%d\n”,z);return0;}输出结果:x+y=30(2)整型变量的定义与使用2.2

常量与变量第20页/共62页intx;x=10;则变量x的值10在内存中的存放形式:intx;x=-10;则变量x的值10在内存中的存放形式:(3)整型数据在内存中的存放形式2.2

常量与变量第21页/共62页例2-2整型数据的溢出问题#include<stdio.h>intmain(){intx,y;x=32767;y=x+1;printf("%d,%d\n",x,y);return0;}运行结果:-32768原因:一个int型变量只能容纳-32768到32767范围内的数,无法表示超过这个范围的数。(4)整型数据的溢出2.2

常量与变量第22页/共62页2.实型变量

(1)实型变量的分类单精度实型:类型说明符为float,在内存中占4个字节,提供7位有效数字。双精度实型:类型说明符为double,在内存中占8个字节,提供15~16位有效数字。例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/2.2

常量与变量第23页/共62页例2-3实型变量的使用#include<stdio.h>intmain(){ floatx,y,z; x=10; y=20; z=x+y; printf(“x+y=%f\n”,z); return0;}运行结果:x+y=30.000000(2)实型变量的定义与使用2.2

常量与变量第24页/共62页例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/字符变量存放字符ASCII码char与int数据间可进行算术运算没有字符串变量,用字符数组存放(3)字符变量2.2

常量与变量第25页/共62页#include<stdio.h>intmain(){charc1,c2;/*定义c1,c2为字符型变量*/c1=97;c2=98;/*将整数97和98分别赋给c1和c2*/printf(”%c,%c\n”,c1,c2);/*以字符形式输出c1和c2*/printf(”%d,%d”,c1,c2);/*输出c1和c2的ASCII码值*/printf(”%d”,c1+c2);return0;}运行结果如下:a,b97,98

2.2

常量与变量第26页/共62页例#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a’;printf(“total=%f,ch1=%c\n”,total,ch1);}宏定义变量定义输出结果运行结果:total=37.500000,ch1=d(4)变量的初始化2.2

常量与变量第27页/共62页C运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:((!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)运算符的分类

2.3

运算符与表达式第28页/共62页定义:由常量、变量、函数、运算符和括号组合起来的、符合C语法规则的式子称为表达式。一个表达式有一个值以及其对应的类型表达式求值首先进行优先级高的运算再进行优先级低的运算,然后对于优先级相同的运算按结合方向进行运算。结合方向:左结合、右结合例如:x-y+z(x-y)+z

x=y=zx=(y=z)

2.3

运算符与表达式第29页/共62页2.3.1算术运算符及算术表达式1.基本算术运算符:+-*/%结合方向:从左向右优先级:(高)-->*/%----->+-说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数,如果两整数中有一个是负数,舍入规则为“向零取整”如果运算的两个数中有一个是实型,则结果为double型%要求两侧均为整型数据例5/2=2

-5/2.0=-2.55%2=1

-5%2=-11%10=

15%1=

05.5%2()

2.3

运算符与表达式第30页/共62页#include<stdio.h>intmain(){printf(”10-9/6*5=%d”,10–9/6*5);return0;}运行结果如下:10-9/6*5=5

#include<stdio.h>main(){intx=5,y;y=++x;printf("%d\n",y);}输出结果:6例2-5计算表达式10-9/6*5

2.3

运算符与表达式第31页/共62页例2-6计算表达式10-3.0/2的值#include<stdio.h>intmain(){printf(”10-3.0/2=%f”,10-3.0/2);}运行结果如下:10-3.0/2=8.500000

2.3

运算符与表达式第32页/共62页2.算术表达式定义:用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子称为算术表达式。其中的运算对象包括常量、变量、函数等。例如:x+y、(x*2)/y、sin(x)+sin(y)等都是算术表达式。doublefloatlongunsignedintchar,short高低

2.3

运算符与表达式第33页/共62页(1)(x+y)×h÷2(2)s(s-a)(s-b)(s-c)(3)(x+1)2+(y-1)2在C语言中,其合法的算术表达式如下:(1)(x+y)*h/2.0(2)s*(s-a)*(s-b)*(s-c)(3)(x+1)*(x+1)+(y-1)*(y-1)例2-7写出下列数学表达式对应的合法的C算术表达式

2.3

运算符与表达式第34页/共62页种类:

<<=>=>==!=

结合方向:自左向右优先级别:关系运算符优先级低于算术运算符优先级6(高)优先级7(低)<<=>>===!=2.3.2关系运算符及关系表达式1.关系运算符例:c>a+b等价于c>(a+b)a>b!=c(a>b)!=ca==b<ca==(b<c)a=b>ca=(b>c)

2.3

运算符与表达式第35页/共62页关系运算结果:1(真)和0(假)

例2-8计算下列关系表达式的值(1)10>10(2)10>=10(3)10>10!=10(4)3*8-9!=5+7%3

2.3

运算符与表达式第36页/共62页2.关系表达式关系表达式的值:是逻辑值“真(True)”或“假(False)”,用1或0表示关系表达式例子

inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表达式值1//表达式值1//表达式值0//d=1//f=0例若a=0;b=0.5;x=0.3;

则a<=x<=b的值为0例inti=1,j=7,a;a=i+(j%4!=0);

则a=2例‘a’>0结果为‘A’>100结果为10

2.3

运算符与表达式第37页/共62页种类:!&&||逻辑运算真值表优先级!(高2)

&&(11)

||(低12)ab!a!ba&&ba||b真假真假假假真真真假假假假假真真假假真真真假真真2.3.3逻辑运算符及逻辑表达式1.逻辑运算符

2.3

运算符与表达式第38页/共62页例a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)例2-9假设x=10,y=20,分析下列逻辑表达式。(1)!x(2)x&&y(3)!x||y(4)!x+5||10%y>=x-10<y【例2-10】写出满足要求的合法的C逻辑表达式。(1)x表达0到9的字符(2)x和y都大于0(3)x是偶数并且x<100

2.3

运算符与表达式第39页/共62页位运算是指进行二进制位的运算例如:将一个存储单元中的各二进制位左移、右移,两个数按位相加等。说明(1)位运算符中除-以外,均为二目(元)运算符,即要求两侧各有一个运算量。(2)运算量只能是整型或字符型的数据,不能为实型数据。附:位运算符运算符含义运算符含义&按位与~取反|按位或<<左移^按位异或>>右移

2.3

运算符与表达式第40页/共62页位运算中的“&”、“|”和“-”的真值表与逻辑运算等价,唯一不同的是位运算是逐位进行运算的。^(异或位运算符)的真值表:aba^b000101110011

2.3

运算符与表达式第41页/共62页定义:用逻辑运算符短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例

a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值例

a||b||c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值例

a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//结果m=0,n=12.逻辑表达式

2.3

运算符与表达式第42页/共62页1.赋值运算符

赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。例2-11假设变量x为整型,计算下列赋值表达式的值。(1)x=y=10(2)x=10+(y=20)(3)x=10+(y=20)/(z=30)2.3.4赋值运算符及赋值表达式

2.3

运算符与表达式第43页/共62页如果赋值运算符两侧的数据类型不一致,但都是数值型或字符型时,系统要进行类型转换。①将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分。如:i为整型变量,执行“i=3.56;”的结果是使i的值为3,以整数形式存储在整型变量中。②将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中,即用0补足有效数字位。如:i为float型变量,执行“i=3;”的结果i=3.000000,以单精度浮点数形式存储到i中。赋值运算符类型转换

2.3

运算符与表达式第44页/共62页③将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元(4个字节)中。但应注意数值范围不能溢出。如果将一个float型数据赋给double变量时,数值不变,有效位数扩展到16位,在内存中以8个字节存储。

2.3

运算符与表达式第45页/共62页④字符型数据赋给整型变量时,由于字符只占1个字节,而整型变量为2个字节,因此将字符数据(8个二进位)放到整型变量存储单元的低8位中。第一种情况:

如果字符型为无符号的字符型,则将字符的8位放到整型变量低8位,高8位补零。第二种情况:

如果字符型为带符号的,则将字符的8位放到整型变量低8位,高8位补符号位,即(符号扩展)。若字符最高位为0,则整型变量高8位补0;若字符最高位为1,则高8位全补1。

2.3

运算符与表达式第46页/共62页⑤将一个int、short、long型数据赋给一char型变量,只将其低8位原封不动地送到char型变量(即截断)。将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中;反之,若将一个long型数据赋给一个int型变量,只将long型数据中低16位原封不动地送到整型变量(即截断)。

2.3

运算符与表达式第47页/共62页⑦将unsignedint型数据赋给longint型变量时,不存在符号扩展问题,只需将高位补0即可。将unsignedint型数据赋给int型变量时,将数据原封不动的送到整型变量中,但如果数据范围超过相应整型的范围,会出现错误。⑧将非unsigned型数据赋给长度相同的unsigned型变量,也是原样照赋(连原有的符号位也作为数值一起传送)。

2.3

运算符与表达式第48页/共62页定义:由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。例如:x=10、x=y=10。说明:赋值运算符左侧必须是变量,不能是常量或表达式。赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型。例

floatf;inti;i=10;f=i;则

f=10.0错误:

3=x-2*y;a+b=3;2.赋值表达式

2.3

运算符与表达式第49页/共62页赋值表达式的值与变量值相等,且可嵌套。例:

a=12;a+=a-=a*a//a=-264等价于a=a+(a=a-(a*a))a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值为5,a,b,c值为5//表达式值为5,b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=2

2.3

运算符与表达式第50页/共62页复合的赋值运算符在“=”前面加上其他运算符种类+=-=*=/=%=

<<=>>=&=^=|=一般形式:变量双目运算符=表达式它等效于:变量=变量运算符表达式a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例2-12假设变量x=10,y=20,计算下列复合的赋值表达式的值。(1)x+=10(2)x*=y+20(3)x+=x-=x/10

2.3

运算符与表达式第51页/共62页自增、自减运算符++--作用:使变量值加1或减1优先级:++/--高于-(单目减)种类:前置++i,--i(先执行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再执行i+1或i-1)intx,y;x=10;y=++x;此时,变量y的值为11。如果程序改为:x=10;y=x++;则变量y的值为10。2.3.5增量运算符

2.3

运算符与表达式第52页/共62页一般形式:ex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论