《C语言第一章C语言基础.ppt》由会员分享,可在线阅读,更多相关《C语言第一章C语言基础.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1/49第第 2 2 章章 C C语言基础语言基础 2.1 2.1 基本概念基本概念 2.2 2.2 基本数据类型基本数据类型 2.3 2.3 运算符与表达式运算符与表达式 2/49 2.1 基基 本本 概概 念念2.1.1 C2.1.1 C语言字符集语言字符集 任任何何一一种种语语言言都都有有它它自自己己规规定定的的一一系系列列字字符符,计计算算机机程程序序设设计计语语言言也也不不例例外外。利利用用这这些些字字符符,根根据据语语法法规规则则,组成各种不同的语句,最后形成具有某种功能的程序。组成各种不同的语句,最后形成具有某种功能的程序。C C语言的字符集可分为以下语言的字符集可分为以下4 4
2、个类:个类:(1 1)英文字母:大小写各)英文字母:大小写各2626个,共计个,共计5252个;个;(2 2)阿拉伯数:)阿拉伯数:0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7、8 8、9 9共共 10 10个数字;个数字;(3 3)下划线:下划线:_ _;3/49(4)特特殊殊符符号号:通通常常由由12个个符符号号组组成成,主要用来表示运算符。主要用来表示运算符。例如:例如:+-*/%+-=b8/49 在同一程序块中,每个变量都有唯一的名字,不能被重复定义。使用变量时必须“先定义,后使用”。定义形式:定义形式:类型标识符:变量名1,变量名2,变量名3.;例如:int a,b
3、,c;float x,y;char c1,c2;或 int c1,c2;注意9/49变量初始化变量初始化 在说明变量的同时给变量一个初始值。int a=5,b=3;int a=b=c=3;int a,b,c;a=b=c=3;例如10/492.2 2.2 基本数据类型基本数据类型 字符型(字符型(charchar)整型(整型(short,int,long,unsignedshort,int,long,unsigned)基本类型基本类型 数值类型数值类型 单精度型(单精度型(floatfloat)实型实型 双精度型(双精度型(doubledouble)枚举类型(枚举类型(enumenum)数据类型
4、数据类型 数组类型(数组类型()构造类型构造类型 结构体类型(结构体类型(structstruct)共用体类型(共用体类型(unionunion)指针类型(指针类型(*)空类型(空类型(voidvoid)11/492.2.1 2.2.1 整型数据整型数据 1 1整型变量整型变量 整型变量分为:基本型(整型变量分为:基本型(intint)、短整型()、短整型(shortshort)和)和长整型(长整型(longlong)。)。同样存储长度的数据又分无符号(同样存储长度的数据又分无符号(unsignedunsigned)数和有)数和有符号(符号(signedsigned)数。)数。定义格式如下:定
5、义格式如下:int i1,i2,i3;int i1,i2,i3;long int lv;long int lv;short int sv;short int sv;unsigned int uv;unsigned int uv;其中,其中,long intlong int、short intshort int、unsigned intunsigned int中的关键字中的关键字int int 可以省略。可以省略。在在Visual C+6.0Visual C+6.0中,基本整型(中,基本整型(intint)数据在内存中占)数据在内存中占4 4个字节。个字节。12/49关 键 字字 节 数取 值
6、范 围char1-128127即-27(27-1)unsigned char10255即0(28-1)shortint2-3276832767即-215(215-1)unsigned shortint2065535即0(216-1)int4-21474836482147483647即-231(231-1)unsigned int404294967295即0(232-1)longint4-21474836482147483647即-231(231-1)unsigned long int404294967295即0(232-1)Visual C+6.0所支持的整型数据所支持的整型数据13/492
7、2整型常量整型常量语言中整型常量通常用十进制、八进制或十六进制语言中整型常量通常用十进制、八进制或十六进制三种数制来表示。三种数制来表示。(1 1)十进制数形式:)十进制数形式:十十进制整数表示方法与数学上的进制整数表示方法与数学上的整数表示方法相同,例如:整数表示方法相同,例如:200,-100,0200,-100,0(2 2)八进制数形式:)八进制数形式:八八进制整数在数码前加进制整数在数码前加数字数字0 0(注意不是字母(注意不是字母o o)。例如:)。例如:01440144(3 3)十六进制数形式:)十六进制数形式:十六十六进制整数在数码前加进制整数在数码前加0X0X。例如:例如:0
8、xFFFF0 xFFFF另外,在整型常量的末尾加上字母另外,在整型常量的末尾加上字母L L或或l l,就组成了长,就组成了长整型常量,如整型常量,如981016L981016L、0L0L等等。14/492.2.2 实型数据实型数据 1实型变量C语言中,带有小数点的数称为实型数,也可称为浮点数。实型数的值域也受机器中的存储长度的限制,它只是数学中实数的一个子集。实型数据有:单精度实数(float)、双精度实数(double)和长双精度实数类型(long double)。实型变量也分为单精度实型变量、双精度实型变量和长双精度实型变量。15/49Visual C+6.0所支持的实型数据所支持的实型数
9、据 关 键 字字 节 数取 值 范 围精度(有数位)float4-3.410-38 3.4103867 double8-1.710-308 1.7103081516 long double16-1.210-4932 1.2104932181916/49单精度实型变量的定义格式如下:float f1,f2;双精度实型变量的定义格式如下:double d1,d2;单精度实型变量和双精度实型变量之间的差异表现在数据精度上。17/492实型常量 实型常量一般不分float型和double型,任何一个实型常量,既可以赋给float变量,又可赋给double型变量,它会根据变量的类型来截取相应的有效位数。
10、实型数据有如下两种表示形式。(1)十进制小数形式:由数字和小数点组成,如3.14159,4.,.3,-6.5。(2)指数法形式:指数法又称为科学记数法,它由“十进制小数”+“e(或E)”+“十进制数整数”三部分组成。18/49例如:3.12E-6表示3.1210-64E+3表示4103.05E6表示0.05106123.e-6表示12310-6注意:(1)e或E之前(即尾数部分)必须有数字,e或E后面的指数部分必须是整数。例如,6E0.2、E-2、1.25e1.5、e3都是不合法的实型常量。(2)精度又称有效位。如果要求的精确度高,就要使用double型数据。19/492.2.3 字符型数据
11、C语言字符型数据包括ASCII字符表中的所有字符,字符数据包括可显示字符和非可显示字符。1字符型变量 字符型变量用来存放一个字符。定义的一般格式如下:char c1,c2;c1,c2即为字符型变量。20/492字符型常量有两种形式:(1 1)用一对单引号括起来的一个字符用一对单引号括起来的一个字符(注意:一定要是英文的单引号(注意:一定要是英文的单引号 )。)。例如例如:A:A表示大写字母表示大写字母A A;a a表示小写的字母表示小写的字母a a;9 9表示字符表示字符9 9;表示空格符。表示空格符。(2 2)用单引号括起来的由反斜杠(用单引号括起来的由反斜杠()引导的一个字符)引导的一个字
12、符或一个数字序列。或一个数字序列。反斜杠引导的是转义字符,即反斜杠后面的字符转反斜杠引导的是转义字符,即反斜杠后面的字符转变成另外的意义。变成另外的意义。例如,例如,n表示表示“回车换行回车换行”控制。控制。21/49转义字符表转义字符表 字字 符符 形形 式式功功 能能n换行换行t制表字符,也叫横向制表字符,也叫横向跳格字符跳格字符v竖向跳格竖向跳格b退格退格r回车回车f走纸换页走纸换页反斜杠字符反斜杠字符单引号字符单引号字符双引号字符双引号字符ddd13位八进制数表示位八进制数表示的字符的字符xhh12位十六进制数表位十六进制数表示的字符示的字符22/49 使用这种方法可以用来表示字符集中
13、的任何一个字符,特别是“控制字符”。例如,7、07、007三个都表示响铃字符(bell)。101,x41都代表字母A。注意23/493字符串常量 字符串常量是用双引号括起来的字符序列,如China、I am student等。字符串常量在内存中的存放:每一个字符均以其ASCII码存放,且最后添加一个0。字符串常量“CHINA”存放在内存中的情况是:C语言中没有专用的字符串变量,但是可以用字符数组来存放字符串。字符a和字符串a的区别?CHINA024/492.3 运算符与表达式运算符与表达式 按操作功能来对运算符进行分类,大致可分为以下几类:算术运算符 关系运算符 逻辑运算符 赋值运算符 按位运
14、算符 其它运算符 表达式是由操作数和运算符组成的序列。25/49 2.3.1 算术运算符和算术表达式算术运算符和算术表达式 1、运算符 +(加):3+4、+3 -(减):3-5、-5 *(乘):3*5 /(除):5/2的值为2 2;5.0/2的值为2.52.5;%(取余):5%3的值为2 2;-5%3的值为-2-2;5%(-3)的值为2 2;-5%(-3)的值为-2-2;12.3%3 若a能被b整除,则有:a%b=0 26/49 2、算术表达式 用算术运算符和括符将操作数连接起来的式子。优先级:()*、/、%+、-结合性:从左至右;表达式的值:数值型(int、long、unsigned、dou
15、ble);例如:已知:float a=2.0;int b=6,c=3;求解:a*b/c-1.5+a+fabs(-5)=?27/49 double float long unsigned int char,short float a=2.0;float a=2.0;int b=6,c=3;int b=6,c=3;a*b/c-1.5+a+fabs(-5)12.0/354.0-1.52.5 +97(int)99.5 +5104.5(double)28/493、自增与自减运算符 +i,-i:使用之前使i的值增1(或减1);i+,i-:使用之后使i的值增1(或减1);i=i+1;j=i;i+;所以i的值
16、为4,j的值为3。i+;j=i;所以i的值为4,j的值为4。例如:(1)i+;+i;等价于(2)i=3;j=i+;等价于 (3)i=3;j=+i;等价于29/49 结合性:自右至左。如:i=2;j=-i+;等价于:j=-(i+);即:j=-i;i+;“+”与”-“是同优先级 所以i的值为3,j的值为-2。设初值设初值a=3;b=5;a=3;b=5;1.c=(a+)*b;1.c=(a+)*b;c=a*b c=a*b a=a+1 a=a+1 2.c=(+a)*b;2.c=(+a)*b;a=a+1 a=a+1 c=a*b c=a*b /c=15,a=4/c=15,a=4/c=20,a=4/c=20,
17、a=430/49 2.3.2 关系运算符和关系表达式关系运算符和关系表达式 1、6种关系运算符:=!=2、关系表达式:用关系运算符将表达式连接起来的式子 优先级:(=)(=!=)结合性:自左至右;表达式的值:若为真,则结果为1;若为假,则结果为0。35 的值为 ;32 的值为 ;3+(43)*4的值为 ;3+43*4 的值为 ;算术运算符优先级高于关系运算符例如0031注意:注意:数学表达式数学表达式1x5在计算机中应写为:在计算机中应写为:1x&x5,而计算机中而计算机中1x1是否成立,再判断是否成立,再判断05或或15是否成立。是否成立。31/49例 若a=0;b=0.5;x=0.3;则
18、a=x278在C中是允许的,值为 0语言程序设计 第二章数据描述C例 应避免对实数作相等或不等的判断如 1.0/3.0*3.0=1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)b)=c f=abc1032/49 2.3.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 1、3种逻辑运算符:&|!(与、或、非)(与、或、非)逻辑量:可以是整型、实型、字符型和指针类型,0假 非0真;如:0,0.0,0,NULL都代表假。2、逻辑表达式:用逻辑运算符将表达式连接起来的式子 优先级:!&|结合性:自左至右;表达式的值:若为真,则结果为1;若为假,则结果为0。33/49 int a=5
19、;float b=3.5;!a (0)!(a b)(1)&:只要有一个为假,结果则为假;只要有一个为假,结果则为假;a&b (1)!a&b(0)!a&!b (0)!(a&b)(0)|:只要有一个为真,结果则为真;只要有一个为真,结果则为真;a b (1)!a|b (1)!a|!b (0)!(a|b)(0)(a 0)(0)(a 0)(1)例如34/49 !高高 算术运算符算术运算符 关系运算符关系运算符&和和|赋值运算符赋值运算符 低低 4-01&28 3&2|8 4-!535/49注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才
20、执行该运算符。例如:(1)a=0;b=1;c=a+&(b=3);结果:a为1,b b为为1 1,c为0。(2)a=1;b=1;c=0;d=-a b-(c=b+3);结果:a为0,b为0,c c为为0,0,d为1。逻辑表达式一般用于控制语句中的条件:例如:n是小于m的偶数:nm&n%2=0nm&n%2=0 year是闰年(能被4整除但不能被100整除或能被400整除):year%4=0&year%100!=0|year%400=0year%4=0&year%100!=0|year%400=036/49 2.3.4 2.3.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 1、赋值运算符 =2、赋
21、值表达式:用赋值运算符将变量和表达式连接起来的式子 形式:=求值规则:将“=”右边表达式的值赋给左边的变量。注意:左侧必须是单个变量,不能是常量或表达式。优先级:!算术关系&和|赋值 结合性:自右至左;表达式的值:被赋值变量的值。例如例如:(1)x=(y=12)/4 y值为12,x值为3,表达式的值为3 (2)x=y=12/4 y值为3,x值为3,表达式的值为3 (3)x=(y=12/4)y值为3,x值为3,表达式的值为3 (4)(x=y)=12/4 37/49 赋值类型转换:当赋值运算符两边类型不一致时,会自动进行类型转换。例如已知:int a=3,b;float x1=65.5,x2;ch
22、ar c1=a,c2;则:b=x1;b的值为 ;x2=a;x2的值为 ;c2=x1;c2的值为 ;x2=c1;x2的值为 ;65653.0000003.000000A 97.00000097.00000038/49 3、复合赋值运算符 *=、/=、%=、+=、-=,=,&=、=、=注意:复合运算符是一个运算符,但功能上,是两个运算符功能的组合。例如:a+=b 相当于 a=a+ba*=b 相当于 a=a*ba*=b+c 相当于 a=a*(b+c)而不是 a=a*b+c39/49例例:int a=2;int a=2;1.a%=4-1;1.a%=4-1;2.a-=a*=3;2.a-=a*=3;3.a
23、+=a-=a*a 3.a+=a-=a*a/a=-4 等价于a=a+(a=a-(a*a)/a=0 等价于a=a-(a=a*3)语言程序设计 第二章数据描述C/a=2 等价于a=a%(4-1)40/492.3.5 2.3.5 其它运算符其它运算符 1.条件运算符?和:,它们与三个操作数组组成三元运算。形式为:?:求值规则和表达式的值:真(非0),求解表达式2 求解表达式1 条件表达式的值 假(0),求解表达式3例如例如:int max,a=5;b=3;max=ab?a:b max及赋值表达式的值均为5;a条件赋值 42/49 结合性:自右至左;y=x10?x/10:x10?x/10:(xb 截断高
24、a-b位,送低b 位;有符号数据 有符号变量:符号扩展;其他情况:高a-b位全补0。符号扩展:符号位为0,剩余的高位补0;符号位为1,剩余的高位补1。abfloat f=23;23.00000 f(7位)double f=A;23.0000000000000 f(15位)48/491.short a=289 ;char c;c=a;a:0000 0001 0010 0001c:0010 0001例如2.char a=A ;short b=-1,c;int d;c=a;d=b;a:0100 0001c:0000 0000 0100 0001b:1111 1111 1111 1111d:1111 1111 1111 1111 1111 1111 1111 111149/493 3、强制类型转换、强制类型转换 形式:(类型名)表达式 强制类型转换时,得到所需类型的中间变量,原来变量的类型不会改变。例如:int a=2,b=5;float x=4.4;则有:表达式 结果 b/a (float)b/a (float)(b/a)(int)x%a+x (int)x%(a+x)2 22.52.52.02.04.44.4