资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二章 C言语根本数据类型及运算,本章引见了C言语中最根本的要素:标识符、关键字、常量、变量、运算符和表达式,以及它们的分类、定义和运用。其中变量、运算符和表达式是本章的重点。,标识符 数据类型,常量 变量,运算符 表达式,数据类型、运算符与表达式例如,标 识 符,标识符是C言语编程时用来标志识别的符号。,ANSI C规定:由字母或下划线开头,后跟字母,数字或下划线恣意组合的字符序列。,正确:count,test123,high_balance,PI,不正确:1count,hi!three,high.balance,a+b,阐明:,1标识符中大小写字母是有区别的。,2不同的系统对标识符的长度有不同的要求。,3普通应做到见名知意,以提高程序的可读性。,关 键 字,ANSI C规定了以下32个关键字保管字,不能再用作各种标识符。如下:,auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,Return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while,C言语还运用以下12个标识符作为编译预处置的命令单词,运用时前面应家“#,define,elif,else,endif,error,if,ifdef,ifndef,include,line,progrma,undef,数 据 类 型,根本数据类型,根本数据类型,字符类型、整形、实型单精度、双精度和无值型。,根本数据类型的长度和值域,类型修饰符,类型修饰符有:signed unsigned long short,整数定义后的缺省形状为signed和short,如表所示。,访问修饰符,用于控制访问和修正变量方式:常量const、易变量volatile,类型,二进制数长度,值域,char,int,float,double,void,8,16,32,64,0,0-255,-32767-32767,-3.4e-383.4e+38,1.7e-3081.7e-308,valueless,C根本类型及其修饰符一切组合,阐明:,不同的计算机系统对各类数据所占内存字节数有不同的规定。,构造数据类型和指针类型,构造数据类型,数组:一组延续、有序地放在一同的具有一样类型的数据。,构造体:将不同类型的数据按一定顺序存放在一同的数据构造。,共用体:将不同类型的数都放在同一同始地址的内存单元中,以节省内存单元。,枚举:只需几种能够的值,将其意义列举出来。实践运用符号来表示假设干个可取的整型值。,指针类型,指针类型是代表地址的,数 值 常 量,字 符 常 量,用单引号括起来的一个字符,如a,G,+等。,它们以其ASCII码方式储存在内存中,每个字符在内存中占一个字节。,还有一类成为控制字符常量或本义字符常量。它们是一类不可打印字符,代表某些功能,如表所示:,字 符 串 常 量,字符串常量是用一对双引号括起来的字符序列,如“ABC,“x+y=6,“How do you do.等。,留意:,a和“a是不同的。,字符常量在内存中只占一个字节,而字符串常量用0;来表示字符串的终了。,如“a在内存中的方式:,符 号 常 量 一,符号常量在C言语中称为宏定义。宏定义是C言语提供的编译预处置功能之一。,不带参的宏定义,#define用来定义一个标识符和一个字符串。,这个标识符叫宏名,交换过程叫做宏交换或宏展开。,方式:#define 宏名 字符串,例:宏定义的运用,#define R 3.0,#define PI 3.1415926,#define L 2*PI*R,#define S PI*R*R,main(),printf(“L=%fn S=%fn,L,S);,输出:L=18.849556,S=28.274333,符 号 常 量 二,阐明:,1在宏名和字符串之间可以有恣意个空格。,例如:#define PI 3.14159,2假设定义了一个宏名,这个名字还可以作为其它宏定义的一个部分来运用。,3宏交换仅是简单地用所阐明的字符串来交换对应的宏名,无实践的运算发生,也不做语法检查。,例如:#define PI 3.14159;,area=PI*r*r;,4C程序中习惯用大写字母作为宏名。,5宏定义用宏命令#undef 宏名 来终止其作用域。,例如:#define PI 3.14159,main,#undef PI,f1,符 号 常 量 三,带参的宏定义,方式:#define 宏名参数标 字符串,阐明:,1在运用时,要将程序中宏名后的实践参数代入字符串中参数的位置。,例如:#define S(a,b)a*b,area=S(3,2);,经编译预处置,该语句被展开为area=3*2;,2宏名与参数表左括号之间不能有空格。,3字符串中应留意括号的运用,以保证运算次序。,例如:#define S(a,b)a*b,area=S(1+2,2,经展开后变成area=1+2*2;,变量的定义,变量定义的方式:,类型 变量名表;,例如:int I,j,num;float a,b,sum;,阐明:,1类型必需是C言语的有效数据类型。,2变量名表可以是一个或多个标识符名,中间以逗号分隔,最后以分号终了。,3变量名可以是C言语中允许的合法标识符。,4一切变量都应先定义后运用。,C言语中的各种类型的变量,整型变量,留意:在运用整型变量时一定要留意数值的范围,超越该变量允许的运用范围将导致错误的效果。,实型变量,可分为单精度型float和双精度型double两类。,字符型变量,分为根本型int,短整型short int或short,长整型long int或long和无符号型unsigned int,unsigned short,unsigned long。,例如:int a,b;long e,f;,阐明,C言语中的各种类型的变量,整型变量,留意:在运用整型变量时一定要留意数值的范围,超越该变量允许的运用范围将导致错误的效果。,实型变量,可分为单精度型float和双精度型double两类。,字符型变量,在内存占4个字节,有7位有效数字,数值范围在3.4e-383.4e+38之间。,阐明,C言语中的各种类型的变量,整型变量,留意:在运用整型变量时一定要留意数值的范围,超越该变量允许的运用范围将导致错误的效果。,实型变量,可分为单精度型float和双精度型double两类。,字符型变量,占8个字节,有15-16位有效数字,数值范围在1.7e-3081.7e+308之间。,阐明,C言语中的各种类型的变量,整型变量,留意:在运用整型变量时一定要留意数值的范围,超越该变量允许的运用范围将导致错误的效果。,实型变量,可分为单精度型float和双精度型double两类。,字符型变量,用来存放字符常量,只能存放一个字符。,例如:char c1,c2;,c1=a;c2=b;对c1和c2赋值,阐明,C言语中的各种类型的变量续,枚举型变量,方式:enum 枚举元素表,例如:enum weekdaysun,mon,tue,wed,thu,fri,sat;,enum weekday workday,restday;,例如:打印出枚举元素sat的内存值。,main(),enumsun,mon,tue,wed,thu,fri,satworkday,restday;,restday=sat;,printf(“restday is%dn,restday);,运转结果:,restday is 6,其他类型变量,另外还有指针型变量,构造体型变量,共用体型变量。,枚举型变量阐明,阐明:,1workday,restday 只能被赋予花括号内的变量。,例如:workday=mon;restday=sun;,2可直接定义枚举变量,例如:,enumsun,mon,tue,wed,thu,fri,satworkday,restday;,3可用初始化改动枚举元素的值,例如:,enum weekdaysun=7,mon=1,tue=2,wed=3,thu=4,fri=5,sat=6,workday,restday;定义sun为7,mon为1,sat为6.,4一个整数不能直接赋给一个枚举变量,应进展类型转换才干赋值。,例如:restday=(enum.weekday)6或restday=sat;,变量的初始化,变量初始化的普通方式:,类型 变量名=常数,例如:char ch=a;,int first=0;,float x=123.45;,阐明:,1全局和静态变量在编译阶段初始化,且只赋一次值。部分变量在执行本函数时初始化。,2全局和静态变量在未初始化时由程序自动赋零。而部分变量和存放器变量在未初始化时其值坚持原来形状不变。,运 算 符,运算符是一种向编译程序阐明一个特定的数学或逻辑运算的符号。,1算数运算符+,-,*,/,%,+,-。,2关系运算符,=,=,!=。,3逻辑运算符!,&,|。,4位运算符,|,&。,5赋值运算符=,及其双目运算符的扩展赋值运算符,6条件运算符?:。,7逗号运算符,。,8指针运算符*,&。,9求字节数运算符sizeof,10强迫类型转换运算符类型。,11分量运算符.,-。,12下标运算符。,13圆括号运算符。,算数运算符和赋值运算符,操作符,作用,运算对象个数,优先级,结合方向,+,-,-,自增,加,1,自减,减,1,负号,1,1,1,2,2,2,自右至左,*,/,%,乘,除,取模(取余),2,2,2,3,3,3,自左至右,+,-,加,减,2,2,4,4,自左至右,=,赋值,2,14,自右至左,3字符串中应留意括号的运用,以保证运算次序。,1+,-,*,/与数学中运算类似。,C言语中的各种类型的变量,位 运 算 符 一,enum weekdaysun=7,mon=1,tue=2,wed=3,thu=4,fri=5,sat=6,three,high.,2i%j+c/i,7&,|,可以与赋值号组成复合赋值运算符&=,|=,=。,workday,restday;,7&,|,可以与赋值号组成复合赋值运算符&=,|=,=。,方式:,/用于整型运算结果时,结果为整数余数被截掉。,变量初始化的普通方式:,算数运算符和赋值运算符,算数运算符和赋值运算符续,阐明:,1+,-,*,/与数学中运算类似。/用于整型运算结果时,结果为整数余数被截掉。,2%仅用于整型运算。,3赋值运算符是将右边表达式的值赋给左边的变量。,合法:x=x+1;非法:x+1=x;,4+,-仅用于整型变量,指针变量。,5+,-,*,/,%,可与赋值号组成复合赋值运算符+=,-=,*=。/=,%=。,例如:a=a+ba+=b;a=a*ba*=b;,算数运算符和赋值运算符例如,例如:,void main()void main(),int x,y;int x,y;,x=10;x=10;,y=+x;y=x+;,printf(“%d,%dnx,y);printf(“%d,%dnx,y);,输出:输出:,11,11 11,10,关系运算符和逻辑运算符一,操作符,作用,运算对象个数,优先级,结合方向,=,=9);printf(“%dn,x=9);,输出:1 输出:0,2,=,31;输出:0,printf“%dn,1=111+12,其结果是假即0。,4在关系和逻辑运算符组成给的表达式中,可用来改动自然优先顺序,如!1&0其值为假,而!(1&0)其值为真。,5在逻辑表达式的求解中,并不是一切的逻辑运算符都被执行。,关系运算符和逻辑运算符三,逻辑运算的真值表如下所示,逻辑值用1和0表示,p,q,P&q,p|q,!p,0,0,1,1,0,1,0,1,0,0,0,1,0,1,1,1
展开阅读全文