版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1C语言教程第2章数据类型运算符和表达式2022-2-22语言程序设计 第二章C编译预处编译预处理命令理命令2022-2-23语言程序设计 第二章C下面针对一般的下面针对一般的C C程序作几点说明:程序作几点说明:(1 1)一个完整的)一个完整的C C语言程序可以由多个函数组成,但必须语言程序可以由多个函数组成,但必须包含包含一个且只能包含一个一个且只能包含一个名为名为mainmain的函数(主函数)的函数(主函数)。程序。程序总是从总是从mainmain函数函数开始执行,与它在程序中的位置无关。开始执行,与它在程序中的位置无关。(2 2)在一个)在一个C C函数模块中,由左右花括号函数模块中
2、,由左右花括号 括起来的部分括起来的部分是函数体,其中的语句系列实现函数的预定功能。是函数体,其中的语句系列实现函数的预定功能。(3 3)函数首部包括函数返回值类型、函数名、形参类型、)函数首部包括函数返回值类型、函数名、形参类型、形参名的说明。有时可以没有形参,但形参名的说明。有时可以没有形参,但()()不能省略。不能省略。(4 4) C C程序中的每一个语句必须以程序中的每一个语句必须以“;”结束,但书写格结束,但书写格式是自由的。式是自由的。 (5 5)# #includeinclude是编译预处理命令,其作用是将是编译预处理命令,其作用是将双引号或尖双引号或尖括号括起来的文件内容读到该
3、命令的位置处括号括起来的文件内容读到该命令的位置处。 (6 6)在)在C C程序的任何位置处都可以用程序的任何位置处都可以用/ /* * . . * */ /作注释,作注释,以提高程序的可读性。以提高程序的可读性。2022-2-24语言程序设计 第二章C2022-2-25语言程序设计 第二章C2022-2-26语言程序设计 第二章C数据类型决定:1. 数据占内存字节数2. 数据取值范围3.可参与的运算种类C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef字符类型字符类型char整型整型实型实型单精度型单精度型float双精度
4、型双精度型double枚举类型枚举类型enum数组数组结构体结构体struct共用体共用体union短整型短整型short长整型长整型long基本整型基本整型int无符号整型无符号整型2022-2-27语言程序设计 第二章C2022-2-28语言程序设计 第二章C类型 符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned s
5、hort16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127无unsigned char80255说明:数据类型所占字节数随机器硬件不同而不同.2022-2-29语言程序设计 第二章C例:判断下列标识符号合法性sum Sum M.D.John day Date 3days #33 lotus_1_2_3 char ab _above $123M.D.John3days#33char$123ab2022-2-210语言程序设计 第二章C2022-2-211语言程序设计 第二章C1.整型常量的表示形式整型常量的表示形式
6、2.4.1整型常量整型常量例例 12 与与 12L例例 30000 为为int型型 65536 为为long int 型型问题:0123 = ( )100 x123 = ( )100 xff = ( )1083291255问题:0123 = ( )100 x123 = ( )100 xff = ( )10 2.整型常量的类型确定整型常量的类型确定2022-2-212语言程序设计 第二章C2022-2-213语言程序设计 第二章C转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如 101 -A
7、 012 -n 376 - x61 -a 60 -0 483 -()例:A-101-x41-65如 A65, a97, 048 , n10如 a A ? n 101例 转义字符举例(ch2_001.c,ch2_004.c) main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C2022-2-214语言程序设计 第二章Ch e l l o 0例 字符串“hello”在
8、内存中a a 0例 a“a”例 空串 “”0例: char ch; ch=“A”; 例: char ch; ch=A; 2022-2-215语言程序设计 第二章C宏体可缺省,表示宏名定义过或取消宏体如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);例 #define YES 1 main() . #undef YES #define YES 0 max() . YES原作用域YES新作用域例 #define PI 3.14159 printf(“2*PI=%fn”,PI*2);
9、宏展开:printf(“2*PI=%fn”,3.14159*2);例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2;宏展开:var= 80+40 *2;( )( )例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2;宏展开:var= 80+40 *2;2022-2-216语言程序设计 第二章C所谓所谓“枚举枚举”是指一一列举出来是指一一列举出来. .声明枚举类型用声明枚举类型用enumenum开头开头例如:例如:enum weekdaysunenum weekdaysun,
10、monmon,tuetue,wedwed,thuthu,frifri,sat;sat;声明了一个枚举类型声明了一个枚举类型enum weekdayenum weekday,可以用此类型来定义变量。可以用此类型来定义变量。如如: :enumenumweekdayweekdayworkdayworkday,week-endweek-end;workdayworkday和和week-endweek-end被定义为枚举变量,它们的值只能是被定义为枚举变量,它们的值只能是sunsun到到satsat之一。之一。例如:例如:workday=monworkday=mon;week-end=sunweek-e
11、nd=sun;是正确的。是正确的。(1) (1) 在在C C编译中,对枚举元素按编译中,对枚举元素按整型常量处理整型常量处理,故称枚举常量。,故称枚举常量。它们不是变量,它们不是变量,不能对它们赋值不能对它们赋值。例如例如: :sun=0sun=0;mon=1mon=1;是错误的是错误的。枚举枚举2022-2-217语言程序设计 第二章C(2) (2) 枚举元素作为整型常量,它们是有值的,枚举元素作为整型常量,它们是有值的,C C语言编译按定语言编译按定义时的顺序使它们的值为义时的顺序使它们的值为0 0,1 1,2 2,。在上面定义中,在上面定义中,sunsun的值为的值为0 0,monmon
12、的值为的值为11satsat为为6 6。如果。如果有赋值语句有赋值语句: :workday=monworkday=mon;workdayworkday变量的值为变量的值为1 1。这个整数是可以输出的。这个整数是可以输出的。如如: :printf(%dprintf(%d,workday)workday);将输出整数将输出整数1 1。也也可以改变枚举元素的值可以改变枚举元素的值,在定义时由程序员指定,如,在定义时由程序员指定,如: :enum enum weekdaysun=7weekdaysun=7,mon=1mon=1,tuetue,wedwed,thuthu,frifri,satworkda
13、ysatworkday,week-endweek-end;定义定义sunsun为为7 7,mon=1mon=1,以后顺序加以后顺序加1 1,satsat为为6 6。(3) (3) 枚举值可以用来做判断比较,用在条件语句中。如枚举值可以用来做判断比较,用在条件语句中。如if(workday=mon)if(workday=mon)if(workdayif(workdaysun)sun)2022-2-218语言程序设计 第二章C(4) (4) 一个整数不能直接赋给一个枚举变量一个整数不能直接赋给一个枚举变量。如:如:workday=2workday=2;是不对的。它们属于不同的类型。是不对的。它们属
14、于不同的类型。应先进行强制类型转换才能赋值。如:应先进行强制类型转换才能赋值。如:workday=(enumworkday=(enumweekday)2weekday)2;它相当于将顺序号为它相当于将顺序号为2 2的枚举元素赋给的枚举元素赋给workdayworkday,相当于相当于workday=tueworkday=tue;甚至可以是表达式。如甚至可以是表达式。如: :workday=(enumworkday=(enumweekday)(5-3)weekday)(5-3);(5 5)枚举元素代表的是一个)枚举元素代表的是一个整数值,是一个整数值的名字,整数值,是一个整数值的名字,并不是字符
15、串并不是字符串,因此可以用于使用整数值的任何场合,但不,因此可以用于使用整数值的任何场合,但不能作为字符串直接输入和输出。能作为字符串直接输入和输出。workday=2workday=2;printf(“%s”, workday);printf(“%s”, workday);/ /* *错误的错误的* */ /2022-2-219语言程序设计 第二章C编译程序根据变量定义为其编译程序根据变量定义为其分配指定字节的内存单元分配指定字节的内存单元.地址地址int a=1, b=-3,c;abc2字节字节2字节字节2字节字节地址地址地址地址.内存内存1-3随机数随机数例: int a,b,c; fl
16、oat data;决定分配字节数和数的表示范围合法标识符例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;例1 int student; stadent=19; /Undefined symbol statent in function main main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义可执行语句main() int a,b=2; a=1; float data; data=(a
17、+b)*1.2; printf(“data=%fn”,data);2022-2-220语言程序设计 第二章C 一个类型说明语句可以同时定义多个同类型的变量,各变一个类型说明语句可以同时定义多个同类型的变量,各变量之间用逗号量之间用逗号“,”分隔。分隔。 用户定义的变量名只是用户定义的变量名只是用来标识内存中的一个具体的存储用来标识内存中的一个具体的存储单元单元, ,在这个存储单元中存放的数据为变量的值。在这个存储单元中存放的数据为变量的值。在未对这些在未对这些变量赋值前,这些变量中(即存储空间中)的值是随机的变量赋值前,这些变量中(即存储空间中)的值是随机的 C C语言允许在语言允许在定义变量
18、的同时为变量赋初值定义变量的同时为变量赋初值。 在为整型变量初始化或赋值时,在为整型变量初始化或赋值时,C C编译系统自动将被赋数编译系统自动将被赋数据转换成与相应变量的类型一致据转换成与相应变量的类型一致。 由于各种整型变量所占的字节数有限,因此,它们所能由于各种整型变量所占的字节数有限,因此,它们所能存放的整数有一定的范围。存放的整数有一定的范围。 变量定义说明变量定义说明2022-2-221语言程序设计 第二章C例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.111*/例例 a=D; /a
19、=D; /* * a=68; a=68; * */ / x=A+5; / x=A+5; /* * x=65+5; x=65+5; * */ / s=!+G / s=!+G /* * s=33+71; s=33+71; * */ /2022-2-222语言程序设计 第二章C例例1 /*ch2_003.c*/ #include #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); 宏定义
20、变量定义输出结果运行结果:total=37.500000, ch1=d2022-2-223语言程序设计 第二章C2022-2-224语言程序设计 第二章C阶码符号阶码符号阶码的数值阶码的数值尾数符号尾数符号尾数的数值尾数的数值阶码阶码j尾数尾数S2022-2-225语言程序设计 第二章Cb, 98B, 66b, 98B, 662022-2-226语言程序设计 第二章CC运运算算符符算术运算符:(算术运算符:(+ - + - * * / % + - / % + -)关系运算符:(关系运算符:( = != = !=)逻辑运算符:(!逻辑运算符:(! & | & |)位运算符位运算符
21、 :(:( | & | &)赋值运算符:(赋值运算符:(= = 及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(, ,)指针运算符:(指针运算符:(* * & &)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算符:(分量运算符:(. -. -)下标运算符:(下标运算符:()其它其它 :(:(( ) -( ) -)2022-2-227语言程序设计 第二章C2022-2-228语言程序设计 第二章C例 5/2 = -5/2.0 =例 5%2 = -5%2 =12%(-7)
22、 =(- 12 )%7 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 12%(-7) = 5(- 12 )%7 = -5 5%1 = 0 5.5%2 ()2022-2-229语言程序设计 第二章C=!=优先级优先级6(高)(高)优先级优先级7(低)(低)例例 ca+b /c(a+b)ca+b /c(a+b) ab!=c /(ab)!=c ab!=c /(ab)!=c a=bc /a=(bc) a=bc /a=(bc /a=(bc) a=bc /a=(bc)/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/d=1/f=02
23、022-2-230语言程序设计 第二章C例例 若若a=0; b=0.5; x=0.3; 则则 a=x278在在C中是允许的,中是允许的, 值为值为0例例 int i=1, j=7,a; a=i+(j%4!=0); 则则a=2例例 a0 结果为结果为 A100 结果为结果为102022-2-231语言程序设计 第二章C例例 注意区分注意区分“= =”与与“=” int a=0,b=1;int a=0,b=1; if(a if(a=b) b) printf(“a equal to printf(“a equal to b”);b”); else else printf(“a not equal t
24、o printf(“a not equal to b”);b”);例例 应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断如如 1.0/3.0 1.0/3.0* *3.0=1.0 3.0=1.0 结果为结果为可改写为:可改写为:fabs(1.0/3.0fabs(1.0/3.0* *3.0-1.0)1e-63.0-1.0)1e-602022-2-232语言程序设计 第二章Cab!a!ba&ba|b真假真假假假真真真假假假假假真真假假真真真假真真2022-2-233语言程序设计 第二章C例例 a=x & xb&xy a=b|x=y !a|ab/ (a=x) &am
25、p; (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)! (2)& (11)| (12)高高低低l优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右2022-2-234语言程序设计 第二章C! (2)& (11)| (12)高高低低l优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右值为值为1值为值为0值为值为1值为值为1值为值为1值为值为1/(53)&2|(8(4-(!0) 值为值为12022-2-235语言程序设计 第二章
26、C例例 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=ab)&(n=cd)/结果m=0,n=1! (2)& (11)| (12)高高低低l优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右2022-2-236语言程序设计 第二章Ca
27、+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3; d=func(); c=d+2;2022-2-237语言程序设计 第二章C例 3=x-2*y; a+b=3; 例 float f; int i; i=10; f=i;则 f=10.0例例 int i; i=2.56; /结果结果i=2;例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/ b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=22022-2
28、-238语言程序设计 第二章C例例: : a=12; a=12; a+=a-=a a+=a-=a* *a a例例: : int a=2; int a=2; a%=4-1; a%=4-1; a+=a a+=a* *=a-=a=a-=a* *=3; =3; /a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)2022-2-239语言程序设计 第二章C例例 j=3; k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,+j); j=3; pr
29、intf(“%d”,j+); j=3; printf(“%d”,j+); a=3;b=5;c=(+a) a=3;b=5;c=(+a)* *b; b; a=3;b=5;c=(a+) a=3;b=5;c=(a+)* *b; b; /k=4,j=4k=4,j=4/k=3,j=4k=3,j=4/4/4/3/3/c=20,a=4c=20,a=4/c=15,a=4c=15,a=42022-2-240语言程序设计 第二章C例例 - -i+ i+ -(i+) -(i+) i=3; printf(“%d”,-i+); i=3; printf(“%d”,-i+); /-3/-3 例例 - -i+i+ i=3; printf(“%d”,-i+); i=3; printf(“%d”,-i+); 2022-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业税务审计与风险管理手册
- 航空客运服务与礼仪规范
- 酒店业客户满意度调查与提升指南
- 信息技术产品销售与推广手册
- 高速铁路运营维护技术规范
- 企业财务报表编制与审查手册与指南(标准版)
- 信息技术支持服务流程指南
- 建筑施工安全防护设施操作手册(标准版)
- 电力设施安全运行与检修手册
- 企业质量管理体系认证实施规范
- 2025年石油钻井井下工具行业分析报告及未来发展趋势预测
- 医院培训课件:《基层高血压管理指南-高血压药物治疗方案》
- 保护江安河保护江安河
- 云南中考英语5年(21-25)真题分类汇编-中考题型完形填空
- 初中语法每日小纸条【空白版】
- 九年级历史下册必背章节知识清单(背诵版)
- (2025年标准)金矿收购协议书
- 湖南省先进制造业“揭榜挂帅”项目申报书+(科技成果转化类)
- 2026届陕西省西安市西工大附中达标名校中考物理模拟试题含解析
- 2025年南京市联合体九年级中考语文一模试卷附答案解析
- GB/T 27030-2025合格评定第三方符合性标志的通用要求
评论
0/150
提交评论