第03章 数据类型、运算符和表达式.doc
《第03章 数据类型、运算符和表达式.doc》由会员分享,可在线阅读,更多相关《第03章 数据类型、运算符和表达式.doc(16页珍藏版)》请在咨信网上搜索。
C语言程序设计 本章重点: ● 数据类型 ● 算术运算符和算术表达式 ● 赋值运算符和赋值表达式 ● 逗号运算符和逗号表达式 第三章 数据类型、运算符和表达式 C语言有四种常用数据类型:字符、整型、单精度实型、双精度实型。 类型 范围 c h a r (字符型) 0 ~ 2 5 5 i n t(整型) - 3 2 7 6 8 ~ 3 2 7 6 7 f l o a t(单精度型) 约精确到6位数 d o u b l e(双精度型) 约精确到1 2位数 除此之外,C语言还提供了几种其他类型,包括数组、指针、结构体、共用体(联合)、位域和枚举等。这些复杂类型在以后的章节中讨论。 §3.1 常量和变量 一、常量 1. 常量的概念 在程序运行过程中,其值不能被改变的量称为常量。 2. 常量的分类 整型常量 实型常量 字符常量 符号常量。 二、变量 1. 变量的概念 在程序运行过程中,其值可以被改变的量称为变量。 2. 变量名 每个变量的名字即变量名,变量命名遵循标识符命名规则。 3. 标识符和命名规则 (1) 有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。 (2) 有效长度:随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。在TC V2.0中,变量名(标识符)的有效长度为1~32个字符,缺省值为32。 (3) C语言的关键字不能用作变量名。 (4) 特别注意C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。 4. 变量的定义与初始化 在C语言中,要求对所有用到的变量,必须先定义、后使用;且在定义变量的同时可以赋初值(初始化)。 (1) 变量定义的一般格式 [存储类型] 数据类型 变量名[, 变量名2……]; 例如:int a, b, c; (2) 变量初始化的一般格式 [存储类型] 数据类型 变量1=值1 ,变量2=值2 … ; 例如:int a=3, b=4, c=5; §3.2 整型数据 一、整型变量 1. 分类 根据占用内存字节数的不同,整型变量又分为4类: (1)基本整型(类型关键字为int) (2)短整型(类型关键字为short [int]) (3)长整型(类型关键字为long [int]) (4)无符号整型。分为三种,只能用来存储无符号整数 (unsigned [int]) 基本无符号整型 (unsigned short) 无符号短整型 (unsigned long) 无符号长整型 2. 占用内存字节数与值域 上述各类型整型变量占用的内存字节数,随系统而异。 ANSI标准中的数据类型 类型 长度 范围 int 1 6 - 3 2 7 6 8 ~ 3 2 7 6 7 short [int] 16 - 3 2 7 6 8 ~ 3 2 7 6 7 long [int] 32 -2 1 4 7 4 8 3 6 4 8 ~ 2 1 4 7 4 8 3 6 4 9 unsigned [int] 16 0 ~ 6 5 5 3 5 unsigned short 8 0 ~255 unsigned long 32 0 ~ 4 2 9 4 9 6 7 2 9 6 3. 举例 main ( ) { int a; short b; long c=2345678; unsigned u; a=-12; b=24; u=10; printf("%d,%d,%d,%d \n", a,b,c,u); } 4. 说明 上述各类型整型变量占用的内存字节数,随系统而异。 在赋值和运算时可能溢出,导致不可确定结果。 二、整型常量 1. 三种表示形式 整型常量即整常数,在C语言中可用三种形式表示: (1)十进制。例如10、36。 (2)八进制(以数字0开头)。例如012。 (3)十六进制(以数字0+小写字母x开头)。例如0x36 main ( ) { int a=123; int b=010+10; int c=0xffff; int d=10+010+0x10; printf("%d,%d,%d,%d \n", a,b,c,d); } 2. 分类 (1)基本整型。其数据范围与int型变量一样。 (2)长整型(在数值后面加“L / l ”)。对数值很大的整型常量,可 使用长整型常量表示,其取值范围可达-231—231-1。例如:123l、315L等。 3. 说明 (1)一个整型常量,可以赋给能容纳下其值的整型变量。 例如,其值在-215--(215-1)的整型常量,可以赋给int型变量和long int型变量;其值在-231--(231-1)的整型常量,就只能赋给long int型变量。 (2)常量无unsigned型。但一个非负整型常量,只要它的值不 超过相应变量的值域(即取值范围),也可以赋给unsigned型变量。 (3) (4) §3.3 实型数据 一、实型变量 1. 分类 根据占用内存字节数的不同,整型变量又分为3类: (1)单精度型。类型关键字为float。 (2)双精度型。类型关键字为double。 (3)长双精度型。类型关键字为long double。(用的很少) 类型 比特数 有效数字 范围 float 32 6 ~ 7 -3.4*10-38 ~3.4*1038 double 64 15 ~ 16 -1.7*10-308~1.7*10308 long double 128 18 ~ 19 -1.2*10-4932~1.2*104932 2. 举例 main ( ) { float a; double b; long double c=-24345345678.1234565433; a=-12.324234; b=23244.4543345; printf("%d,%d,%d \n", a,b,c); } 二、实型常量 1. 表示形式 实型常量即实数,在C语言中又称浮点数,其值有两种表达形式: (1)十进制形式。例如3.14、9.8。 (2)指数形式:<尾数>E(e)<整型指数>。例如3.0E+5等。 2. 说明 实型常量不分float型和double型。一个实型常量,可以赋给一个实型变量(float型或double型)。 §3.4 字符型数据 一、字符常量 1. 定义 用一对单引号括起来的单个字符,称为字符常量。 例如,‘A’、‘1’、‘!’ 等。 2. 转义字符 C语言还允许使用一种特殊形式的字符常量,就是以反斜杠“\ ”开头的转义字符。注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:‘\\’、‘\’‘。 字符形式 含义 ASCII代码 \n 换行 10 \t 水平制表 9 \b 退格 9 \r 回车 13 \f 换页 12 \\ 反斜杠 92 \’ 单引号字符 39 \” 双引号字符 34 \ddd 任意字符三位八进制 \xhh 任意字符二位十六进制 3. 举例 main() { printf(“ ab c\t de\rf\tg\n”); printf(“h\ti\b\bj k);”); printf(“\x4F \x4B \x21 \n”); printf(“\x15 \xAB \n”); } 执行结果: f gde h j k OK! § ½ 二、字符变量 1. 变量的定义和存储 字符变量的类型关键字为char,占用1字节内存单元。 字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。 char ch1, ch2; /*定义两个字符变量:ch1,ch2*/ ch1=’a’; ch2=’b’; /*给字符变量赋值* 2. 说明 (1)一个字符型数据,既可以字符形式输出,也可以整数形式输 出。 (2)允许对字符数据进行算术运算,此时就是对它们的ASCII码 值进行算术运算 3. 举例 [例1] main() { char ch1,ch2; ch1='a'; ch2='b'; printf(“ch1=%c,ch2=%c\n”,ch1,ch2); printf(“ch1=%d,ch2=%d\n”,ch1,ch2); } 程序运行结果: ch1=a,ch2=b ch1=97,ch2=98 [例2] main() { char ch1,ch2; ch1=‘a’; ch2=‘B’; /*字母的大小写转换*/ printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32); } 程序运行结果: ch1=A,ch2=b 4. 总结 关于数据存储输出的总结 1) 不同类型数据的存储长度不同,能表示数的有效范围也不同 2) 不同类型数据赋值时应赋有效值 3) 不同类型数据输出时应用相应输出格式符 字符型(char) S000 0000 整型(int) S000 0000 0000 0000 实型(float) S000 0000 0000 0000 0000 0000 0000 0000 [例1] main() { char c=128; printf(“%c”,c); printf(“%d”,c); c=256; printf(“%c”,c); printf(“%d”,c); } [例2] main() { int x=3.5; int y=0x7fff; printf(“%d”,x); printf(“%d”,y); y=0x8000; printf(“%d”,y); y=0x10000; printf(“%d”,y); y=0x10001; printf(“%d”,y); } [例3] main() { long x=365; printf(“%d”,x); printf(“%Ld”,x); x=0x8000; printf(“%d”,x); printf(“%Ld”,x); x=0x10000; printf(“%d”,x); printf(“%Ld”,x); x=0x110001; printf(“%d”,x); printf(“%Ld”,x); } 三、字符串常量 1. 字符串常量的概念 字符串常量是指用一对双引号括起来的一串字符。双引号只起定界作用。例如: " China " ,"C program", "YES ", "33312-2341", "A" 等。 2. 字符串的存储和长度 C语言中,字符串常量在内存中存储时,系统自动在字符串的末尾加一个“串结束标志”,即ASCII码值为0的字符NULL,常用\ 0表示。因此在程序中,长度为n个字符的字符串常量,在内存中占有n+1个字节的存储空间。 例如,字符串China有5个字符,作为字符串常量" China "存储于内存中时,共占6个字节,系统自动在后面加上NULL字符,其存储形式为: C h i n a \0 3. 说明 要特别注意字符串与字符串常量的区别,除了表示形式不同外,其存储性质也不相同,字符' A '只占1个字节,而字符串常量" A "占2个字节。 9 ‘9’ "9" §3.5 各类数值型数据见的混合运算 先看下面例子,理解什么是数值数据的混合运算 [例1] main() { int x=3; long y=100 float z; z=x+y; x=y+23; y=z+x; printf(“%d, %d, %d”, x, y, z); } 不同类型数值数据混合运算时应注意: 简单类型赋值给复杂类型可以,反之则有问题 §3.6 算术运算符和算术表达式 一、算术运算符和算术表达式 1. 基本算术运算符 + 3+5 a+b - 4-6 x-y * 3*5 3.14*s / 5/2 5.0/2 -5/3 % 7%4 (整数求余运算) 用算术运算符、括号,把数值型常量、变量连接起来就是算术表达式 [例] main() { int x; folat y; x=5/2; y=5/2; printf(“%d, %f”, x, y); x=-5/2; y=5.0/2; printf(“%d, %f”, x, y); } 2. 自增、自减运算符 作用是使变量的值增1或减1 ++ i++ ++i -- i-- --i x=I++ 相当于 x=I; I=I+1; x=++I 相当于 I=I+1; x=I; [例] main() { int i=10 , j=10; int x, y; x=i++; printf(“%d, %d”, x , i); x=++j printf(“%d, %d”, x , j); y=x--; printf(“%d, %d”, y , x); x=100 y=--x; printf(“%d, %d”, y , x); } [例] main() { int I=5, j=10; I++; printf(“%d”, I); printf(“%d”, I++); printf(“%d”, ++I) printf(“%d, %d”, j++, j++); } 3. 说明 不要写有二义性的语句或晦涩语句,应写成多个简单语句。 如 x=y+++z printf(“%d, %d”, j++, j++) 应写为多句,或用括号说明先计算哪部分 3++ (错误) 二、算术运算符的优先级和结合性 1. 优先级 先乘除余,后加减 3+5%4-2*5 2. 结合性 左结合性 3*6 / 2*5 右结合行 a=b=3 §3.7 赋值运算符和赋值表达式 一、赋值运算符和赋值表达式 1. 赋值运算符 C中 “=”称为赋值运算符,它的作用是将一个表达式的值赋给一个变量。赋值运算符的一般形式为: 变量 = 赋值表达式 例如, x = 5 y = (float)5 / 2 如果表达式值类型与被赋值变量的类型不一致,系统将会把表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。 2. 赋值表达式 由赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。 (1)一般格式 变量 = 表达式 如: a=5+2 (2)赋值表达式的值 任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。 例如,z执行“a = 5+2”这个赋值表达式时,先把7的值赋给变量a,然后再让整个表达式的值等于a 的值 3. 举例 [例] main() { int a,b; int x, y, z; a=5; b=a+2; x=y=b*10-5; printf(“%d, %d”, a, b); printf(“%d, %d”, x, y); printf(“%d”, z=a+b); } 二、复合赋值运算符 C语言还有以下的复合赋值运算符: +=,-=,*=,/=,%= 它们的具体含义如下: x += 3 等价于x=x+3 y *= x + 6 等价于y=y*(x+6),而不是y=y*x+6 [例] main() { int a,b; int x, y, z; a=5; b+=a; c-=b+5; x=10; y/=2; z%=y printf(“%d, %d”, a, b); printf(“%d, %d”, x, y); } §3.8 逗号运算符和逗号表达式 C语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。 1. 一般形式 表达式1, 表达式2, ……, 表达式n 2. 求解过程 自左至右,依次计算各表达式的值,“表达式n” 的值即为整个逗号表达式的值。 例如,逗号表达式“a = 3 * 5, a * 4”的值是60: 先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式的值=60。 又例如,逗号表达式“(a = 3 * 5, a * 4), a + 5”的值=20:先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗号表达式的值=20。 注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。 3. 举例 [例1] main() { int a,b; a=3*5, a*4; b=(a+=10,a++) printf(“%d, %d”, a, b); printf(“%d”,a,4); printf(“%d”,(a,4)); printf(“%d”,a,b=5); } [例2] main() { int a,b,c; a=1, b=2, c=a+b; /* a=1; b=2; c=a+b; */ printf(“%d, %d, %d”, a, b); 3+5; a; a=getch(); printf(“%d”, a); getch(); } 补充程序 1 典型的绘图程序(满天繁星) #include <stdlib.h> #include <graphics.h> main() { int x,y; int color; int i; int GraphDriver = DETECT; initgraph( &GraphDriver, "EGAVGA", "" ); rectangle(0,0,630,470); for (i=1; i<=1000; i++) { x=random(640); y=random(480); color=random(16); putpixel(x,y,color); } getch(); closegraph(); } 2 判断奇数和偶数(scanf和if) main() { int c; clrscr(); scanf(“”,&x,&y); if (x%y==0) { prinf(“yes even”); } else { prinf(“no odd”); } getch(); } 作业 1 输入三个数,求最大数 2 求一元二次方程根程序 第3章 第16页- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第03章 数据类型、运算符和表达式 03 数据类型 运算 表达式
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【pc****0】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【pc****0】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【pc****0】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【pc****0】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文