欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第二章 数据类型运算符和表达式.docx

    • 资源ID:10995622       资源大小:50.80KB        全文页数:20页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第二章 数据类型运算符和表达式.docx

    1、第二章 数据类型运算符和表达式第二章 数据类型、运算符和表达式2.1 C语言的数据类型C语言的数据类型如下: 整型(int) 短整型(short int) 长整型(long int) 整型无符号整型(unsigned int) 无符号短整型(unsigned short int) 无符号长整型(unsigned long int) 字符型(char) 基本类型 字符型 无符号字符型(unsigned char) 单精度(float) 实型 双精度(double) 长双精度(long double) 数据类型 空类型(void) 数组( ) 指针类型( * ) 构造类型 结构体(struct)

    2、共用体(union) 枚举(enum) 用户定义类型(typedef)通过以上数据类型用户还可以构造出更复杂的数据结构,如:链表、二叉树等。c语言的数据还可分成常量和变量两种。本章主要介绍基本数据类型。2.2 常量与变量一常量和符号常量常量:在程序执行过程中,值不能被改变的量。如123,3.15,A,”Hello”,均是常量。在语言中有整型常量、实型常量、字符型常量和字符串常量和符号常量五种类型。符号常量语言中可以用一个 标识符来代表一个常量,这个标识符就称为符号常量。可以利用宏定义 #define 来定义符号常量,例如:#define PI 3.14159 #define PRICE 30符

    3、号常量与变量不同:符号常量的值在其作用域内不能改变,也不能再被赋值。习惯上,符号常量名用大写字母,变量用小写字母,以示区别。二变量:其值可以改变的量。变量有以下几个特征:变量名、变量值、变量的数据类型、变量的地址、变量的存储类别、变量的作用域以及变量的生存期等。变量名是指按照语言标识符的规则,给变量取的名称,使用变量名就可以存取变量的值。标识符:在语言中标识符就是常量、变量、类型、语句、标号及函数的名称。标识符的命名规则: 标识符必须由英文字母、下划线、数字组成,不能包含其它字符(如全角字母和全角数字不能用于标识符); 标识符必须由英文字母或下划线打头; 标识符的长度不能超过32个字符;(不同

    4、的系统规定不同) 标识符大小写字母有区别(代表不同的标识符)。语言中标识符有三类:关键字、预定义标识符和用户定义标识符。关键字已被系统所使用的标识符称为关键字,每个关键字在程序中都有其特定的作用,关键字不能作为用户标识符。由ANSI标准定义的共32个关键字,见下表 ANSI标准定义的共32个关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvo

    5、idvolatilewhile预定义标识符C语言系统提供的库函数名和编译预处理命令等构成了预定义标识符。用户可以定义标识符与系统预定义标识符一样的名称,但应尽量避免这样做。用户标识符用户可以根据需要对程序中用到的变量、符号常量、用户函数、标号等进行命名,成为用户标识符。用户在定义标识符时应注意以下事项:禁止使用Turbo 2.0关键字作为用户的标识符;尽量避免使用预定义标识符作为用户标识符;标识符中不能出现全角字符、空格,不要把下划线“_”写成减号“-”;标识符必须先定义后使用,使用未经定义的标识符将出现编译错误;使用的标识符最好做到见名知义,以增加源程序的易读性和易维护性。例如area 表示

    6、面积,sum 表示求和等;在同一函数(的不同复合语句)中,最好不要定义相同的标识符作变量名。举例说明标识符的使用正确的标识符不正确的标识符不正确的原因area33area数字打头sort_scoresort-score标识符中使用了减号“-”DEFAULTdefault使用关键字作标识符a123ba12b标识符中使用了全角字符“”_915-915标识符中使用了减号“-”xandyx&y标识符中含有非法字符“&”一个变量在内存中占有一定的存储空间,这个存储空间内所存放的数据就是变量的值。int a; a a=10; a 10变量的数据类型确定了该变量的性质、取值范围、占内存空间大小以及所能参加运

    7、算的方式。有关变量地址、变量的存储类别、变量的作用域以及变量的生存期等的概念我们将在以后的课程中介绍。在语言中变量必须先定义才能使用,这样做的目的是:1 能保证程序中变量名使用的正确:如,把num写成nun在编译时可发现错误。2 便于在编译时,按定义为其分配相应的存储单元:如: char a ; (为a 分配一个字节单元) int b ; (为b 分配二个字节单元)3 便于编译时根据定义的类型检查该变量所进行的运算是否合法:如:a % b (求余运算,要求a 和b应为整型变量)变量定义的格式如下: 数据类型关键字 ; 变量名表是一个或多个标识符,每个标识符之间用逗号,分开。例如: int i,

    8、 j, k; 2.3 整型数据一整型常量 整型常量就是整数。语言的整型常量有三种表示形式:十进制整数:不由数字0开头的整数组成,可以由数字0至数字9组成,前面可加正号“+”或负号“-”。如:123、+4560、-987都是十进制整常量。八进制整数:由数字0开头的整数组成,只能由数字0至数字7组成,前面可加正号“+”或负号“-”。例如:07623、-04567、+0315都是八进制整常量。如果写成0891则是错误的,八进制数不能含有数字和数字。十六进制整数:由数字0和字母x(或X)开头的数组成,可以由数字0至数字9、字母a至字母f或字母A至字母F组成,前面可加正号“+”或负号“-”。如0xa3f

    9、、-0X9A、0x345、+0X6ab都是十六进制整型常量。使用整型常量应注意下面事项:一个整型常量的尾部加上字母l或L时,则为长整型(long 或long int)常量。例如:123l为十进制的长整型常量、0123L为八进制的长整型常量、-0x123L为十六进 制的长整型常量。长整型常量往往用于函数调用中,如果函数的形参为长整型,则实参也必须是长整型。 一个整型常量也可以由它的值确定它的类型,如果其值在-3276832767范围内,则认为它是整型(int)常量;如果其值超出上述范围,而是在-21474836482147483647范围内,则认为它是长整型(long或long int)常量。二

    10、整型变量1 整型变量的分类:基本型,短整型,长整型和无符号型四种,见下表:说 明数据类型关键字占字节取值范围整型int2-3276832767短整型short int2-3276832767长整型long int4-21474836482147483647无符号整型unsigned int2065535无符号短整型unsigned short int2065535无符号长整型unsigned long int404294967295各种类型的变量的不同之处在于所占用的存储单元数和取值范围不同。整数在内存中的存储情况:以补码的形式表示。有符号数的最左边高位为符号位(0为正数,1为负数),其余为数

    11、值位;无符号数则全为数值位。如:i=10与j=-10 在内存的表示如下:ij0000 00000000 10101111 11111111 0110ij0000 10100000 00001111 01101111 11112 整型变量的定义:如: int a,b;unsigned short c,d;long e,f;对变量的定义可放在程序的任何位置,但应放在引用它之前(一般放在一个函数的开头部分)。2.4 实型数据一实型常量 实型常量就是实数(又称浮点数)。语言中实型常量用两种形式表示: 小数形式:一个实数的表示包括数字和小数点。例如:1.23456、-0.465、+789.123、0.0

    12、、1.0等。 指数记数法(科学记数法)形式:这时实数包括整数部分、小数点、小数部分和指数部分,指数部分前加字母e或E。例如:1.2345e3、12.345E2、1.2345e03、1.2345e+3均表示1234.5这一实数。又例如:0.123e+5、1e-4、35.69E11均为合法的实数表示。用指数形式表示实数时,指数部分必须是整数,字母e或E之前必须有数字。例如:123e5.6、e5、.e9、e等均为不合法的指数形式。 上述两种表示方法所表示的实型常量都是双精度实型(double),双精度实型常量在内存中占8个字节,取值范围在1.710-3081.710+308之间。(Turbo C中,

    13、在双精度实型常量后加一字母l或 L则构成长双精度实型常量(long double),长双精度实型在内存中占10个字节,取值范围在3.410-49321.110+4932之间,例如1.23e1234l、5.67e-3456L均为正确的长双精度实型常量。)由实型常量的表示范围可知实型常量总是取正值。如果要使用负值,可在实型常量的前面加一个负号,构成常量表达式,其中的负号处理成算术操作符。实型常数只有十进制实型常数一种,没有八进制实型常数,也没有十六进制实型常数。绝对值小于1的实型常数,其小数点前面的零可以省略,如:0.123可写为.123,-0.0123e-5可写为-.0123e-5。二实型变量f

    14、loat43.410-383.41038 7位有效数字单精度实型double81.710-3081.710308 位有效数字双精度实型long double103.410-49321.1104932 位有效数字长双精度实型如: float a=123456.789; printf(“%f”,a);则只能输出123456.789062(取7位有效数字)若a 定义为double型,则输出为123456.7890002.5 字符型数据一字符型常量 语言的字符常量是ASCII码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等,均为半角字符,一个字符常量在内存中占1个字节,字

    15、符常量不能是全角字符。语言字符常量有三种表示方法:把单个字符用一对单引号括起来表示字符常量,例如 a、 6、A、+、:。用该字符的ASCII码值表示的字符常量,例如十进制数65表示大写字母A, 十六进制数0x41也表示A,八进制数0101均表示大写字母A。一些不能用符号表示的特殊字符(如控制符等),可以用ASCII码值来表示,如换行可用10表示,也可用十六进制数0x0a 或八进制数012来表示。反斜扛“”开头后跟规定的单个字符或数字,并用一对单引号括起来表示字符常量。例如用r表示回车、用n表示换行。换行也可用12或012反斜扛后跟八进制数表示,应注意这里反斜扛“”后的八进制数前面的0可以省略,

    16、省略后并不表示成十进制数。换行还可用x0a反斜扛后跟十六进制数表示。这种表示法中反斜扛“”后面的字符变成了另外的意义,我们称之为“转义字符”。下表列出了常见的“转义字符”常量。常见的转义字符常量字符常量含义等价表示n输出到屏幕和文本文件为回车且换行,若输出到二进制文件仅为换行10、0x0a、x0a、12r回车13、0x0d、x0d、15t制表键,光标右移到下一输出区首,通常每个输出区占个个字符9、0x09、x09、11f换页12、0x0c、x0c、14b退格8、0x08、x08、10反斜扛字符92、0x5c、x5c、134单引号字符39、0x27、x27、47双引号字符34、0x22、x22、

    17、42ddd1到3位八进制数组成ASCII码所对应字符0dddxhh1到2位十六进制数组成ASCII码所对应字符0xhh例 main() printf(123456789012345n); printf(ab ctdeb101fgn); printf(ab crde12x41n); 运行结果: 123456789012345 ab c dAfg de c A上述程序中没有单个输出字符常量,而使用printf函数输出双引号内的各个字符。第一个printf输出一串数字,作为坐标参照。最后的n作用是回车并换行。第二个printf从第1列开始先输出“ab c” ,后遇到t光标移到下一输出区的开始位置(第

    18、9列),从第9列开始输出“de”,又遇到退格符b,光标退格(左移一格)在字符e的位置上输出 101(字母A)以及“fg” ,在第10列上字母A把字母e覆盖了,最后回车换行。第三个printf从第1列开始先输出“ab c” ,后遇到r回车,光标移到本行的第1列输出“de”,并把“ab”覆盖了,又遇到回车换行12, 光标移到下行的第1列输出字符41(字母 A),最后回车换行。二字符变量定义: char ;一个字符变量占用一个字节,存放一个ASCII码字符代码,与整数的存储形式相类似,因此字符数据与整型数据之间可以通用。如: main() char c1,c2; c1=a; c2=98; print

    19、f(“%c,%c,%d,%dn”,c1,c2,c1,c2); 结果为:A,b,65,98又如: main() char c; c=376; printf(“%c,%d”,c,c); 结果为:,-2注意:有些系统(如Turbo C)将字符变量所占用的字节的最高位当成符号位,即把字符处理成带符号的整数。但可以如下定义无符号的字符变量:unsigned char c;三字符串常量若干个字符用双引号括起来就构成了字符串常量。如”Good morning!”、 ”123”、”A”、”abcde” 都是字符串常量。语言中在存储字符串常量时,除了存储双引号中的所有字符之外,在串的最后还要存放1个字符0,表示

    20、该字符串常量到此结束。字符0也称为字串结束标志。因此字符串常量abcde 占内存个字节,字串结束标志0多占了一个字节。字符串常量abcde在内存是按如下方式存储的:abcde0利用系统提供的输出函数printf和 puts可以将字符串常量整体输出到屏幕,利用输入函数scanf和 gets可以将字符串整体输入到内存。另外字符常量A,和字符串常量A不同,前者为字符常量可直接赋值给字符变量,而后者为字符串常量可以赋给字符数组也可以赋值给字符指针变量,A占内存1个字节,而”A” 占内存2个字节, 字符串结束标志0多占了一个字节。C语言中没有专门的字符串变量,而是用一个字符型数组来存放一个字符串。2.6

    21、 变量赋初值变量赋初值:指在定义变量时,对变量进行赋值。又称为变量初始化。变量赋初值一般有如下几种方式:char ch=a;int i=0, j=1; int a,b=10,c;int x=3,y=3,z=3; /* 可用 int x=y=z=3; */一个动态变量未经初始化、也未对其赋值,其值是不确定的。例如在某函数中有以下程序段: int i; printf(“%dn”, i);执行后输出结果是个不确定的整数值。静态存储变量和外部变量若未经初始化、也未对其赋值,其值为0值。2.7 各类数值型数据间的混和运算整型、实型(float,double)、字符型数据间可以混和运算。不同类型的数据要先

    22、转换成同一类型,然后进行运算。转换规则如下:注意:float型数据在运算时一律先转换成double型的,以提高运算精度。即使是进行加法运算。2.8 算术运算符和算术运算一C运算符简介C的运算符有13类,15个级别。(参见附录)二算术运算符和算术表达式1 基本的算术运算符 + ( 双目运算两数相加,如5+6,单目运算取正值,如 +15 ) - ( 双目运算两数相减,如5-6,单目运算取负值,如 19 ) * ( 双目运算符,两数相乘, 如 5*6 ) / ( 双目运算符,两数相除, 如 15/6 ) % ( 双目运算符,取模或求余数,两个数必须都是整数,如 15%6 值为3) 所谓单目运算符是指

    23、对一个运算对象进行操作,例如: -19。双目运算符是对两个运算对象进行操作,这两个运算对象分别放在操作符的左边和右边。如:5+6。 说明:1 除法:两个整数相除,结果为整数(取整数部分,不采用四舍五入) 如:5/3值为1;-5/3值为-1。 若有一个数为实数,则结果为double型。2 求余:两个数必须都是整数,结果的符号与运算符左边数的符号相同。 如:5%3=2,-5%3=-2,5%(-3)=2,-5%(-3)=-2。2 算术表达式和算术运算符的优先级与结合性算术表达式:用算术运算符和括号把运算对象连接起来的,符合C语法规则的式子。运算对象:包括常量、变量和函数。算术表达式的值为整数或实数。

    24、如3*x+1.0/y-10*sqrt(x) 。注意:算术表达式中可以使用多层圆括号,左、右括号必须配对。运算时先计算出内层括号表达式的值,由内向外计算表达式的值。优先级(同一行上的运算符,优先级相同):( ) 圆括号 高+、- 单目运算符,取正、取负*、/、% 双目运算符,乘、除、取模 +、- 双目运算符,加、减 低结合性:在优先级相同时的求值顺序。上面所有双目算术运算符的都是“从左到右”,而单目运算符取正“+”和取负“-”的结合方向是“从右到左”。 例如表达式(-16/3*2+1)%6的值是 -3,先计算圆括号内的值,单目运算符“-”优先级高于其它双目运算符,先计算整数除16/3值为 5,

    25、-5*2+1 值为 9, 最后-9%6值为-3。3 强制类型转换运算符数据类型的转换有两种: 系统自动进行类型转换。如:3+6.5 强制类型转换。如:x为float型,(int)x%3一般形式: (类型名)(表达式)如: (double)a (int)(x+y) (float)(5%3)强制类型转换只产生一个中间值,并不改变原变量的值和类型。如: main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%dn”,x,i); 结果为: x=3.600000,i=34 自增、自减运算符作用是使变量的值增1或减1。+i、-i:前缀运算符,这时是先

    26、使运算对象值增1或减1之后,再使用运算对象。例如i=1;j=+i;则变量i的值先增1变成2,然后把i的值赋给变量j,j的值为2。同样的若有语句 i=1;j=-i;执行后i的值为0,j的值为0。i+、i-:后缀运算符,这时是先使用运算对象,再使运算对象值增1或减1。例如i=1;j=i+;则先把i的值赋给变量j,j的值为1,然后变量i的值再增1变成2。同样的若有语句 i=1;j=i-;执行后i的值为0,j的值为1。如:i=3;printf(“%d”,+i); 输出结果为 4,i的值为4。i=3;printf(“%d”, i +); 输出结果为 3, i的值为4。增1与减1运算符如果仅仅只进行自加、

    27、自减运算,没有使用运算对象的值,作前缀运算符与作后缀运算符运算结果一样。如语句 i-;与语句 -i;效果一样,都等同于语句i=i-1;说明:+,-都是单目运算符,其运算对象必须是变量,不能是常量和表达式。例如语句i+;相当于语句i=i+1;又如语句i-;相当于语句i=i-1;这里有一个赋值的过程。 “+” 和 “-”运算符的结合方向是“从右到左”。例如 i=1; j=-i+;由于取负运算符“-”和增1运算符“+”的优先级相同,结合方向是“从右到左”,即相当于-(i+),又由于是后缀运算符,则先取出i的值使用,把-i的值赋值给j, 变量j的值为-1,然后使i的值增1变成2。自增、自减运算符一般用

    28、于循环变量,指针变量等。 容易搞混的几个问题: k=(i+)+(i+)+(i+); 若i=3;则多数系统先将i值取出相加,再完成三个i的自增,因此结果是k为9,i为6。(Turbo C也是如此) 若 k=(+i)+(+i)+(+i); 则先进行三个i的自增,再进行相加运算,因此结果为k 为18,i为6。 i+j; C编译在处理时尽可能多地(自左而右)将若干个字符组成一个运算符(包括标识符,关键字等)。因此i+j应解释为(i+)+j,而不是i+(+j)。 多数系统对函数参数的求值顺序是从右到左的: i=3; printf(“%d,%d”,i,i+); 输出的结果为: 4,3这些问题不必死记,不同的系统处理方式也不相同,必要时上机试一下即可。2.9 赋值运算符和赋值运算一赋值运算符:=作用:将一个数据赋给一个变量。如 a=a+1二当“=”两边数据类型不一致时的类型转换


    注意事项

    本文(第二章 数据类型运算符和表达式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开