好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第01章02数据类型和运算符.ppt

54页
  • 卖家[上传人]:大米
  • 文档编号:587394890
  • 上传时间:2024-09-05
  • 文档格式:PPT
  • 文档大小:474KB
  • / 54 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第第1 1章(章(2 2)数据类型、运算符与表达式)数据类型、运算符与表达式 C C语言基本语法成分语言基本语法成分 C C语言的数据类型语言的数据类型 常量和变量常量和变量 基本数据类型基本数据类型 算术运算与算术表达式算术运算与算术表达式 赋值运算与赋值表达式赋值运算与赋值表达式 C C语言特有的运算和运算符语言特有的运算和运算符1 C语言基本语法成分void mvoid main( )ain( )     { { intint a,b,sum;a,b,sum;     /*/*/*/*定义变量定义变量定义变量定义变量* * * */ / / / a=123; b=456; a=123; b=456; sum=a+b; sum=a+b; printf("sumprintf("sum is is %d%d\n",\n", sumsum); );} }void:void:关键字关键字main:main:标准标识符标准标识符(由系统定义)(由系统定义)a,b,suma,b,sum: :标识符标识符(由用户定义)(由用户定义)‘==’,,‘++’: :运算符运算符( (空格空格):):分隔符分隔符2 1. C语言字符集语言字符集C程序是用下列字符所组成的字符集写成的:§⑴⑴ 字母:字母:A-Z,a-z§⑵⑵ 数字:数字:0-9§⑶⑶ 标点符号、特殊字符:标点符号、特殊字符:§⑷⑷ 空白符:空白符:空格,制表符(Tab,跳格键),换行符(空行)的总称。

      ! # %^ &+ - * / = ~ < >\|. , ; : ? ' " ( ) [ ] { }空白符只在字符、字符串中有意义 ,编译系统忽略其它位置的空白空白符在程序中只是起到间隔的作用3 2. 2. 标识符标识符 用来标识变量名、符号常量名、函数名、数组名、用来标识变量名、符号常量名、函数名、数组名、类型名等实体(程序对象)的有效字符序列标识符由用类型名等实体(程序对象)的有效字符序列标识符由用户定义C语言标识符定义规则包括:⑴ ⑴ 标标识识符符只只能能由由字字母母、、数数字字和和下下划划线线三三种种字字符符组组成成,,且且第第一个字符必须为字母或下划线一个字符必须为字母或下划线例例如如,,合合法法的的标标识识符符::a a,,i i,,sumsum,,averageaverage,,_total_total,,ClassClass,,dayday,, studentstudent,,p405p405;;不合法的标识符:不合法的标识符:5a5a,,M.D.JohnM.D.John,,$123$123,,3D643D64,,a-ba-b⑵ ⑵ 大小写敏感,即大小写敏感,即C C认为大小写字母为不同的字符。

      认为大小写字母为不同的字符 例如:例如:sumsum不同于不同于SumSum,,BOOKBOOK不同于不同于bookbook C C程序员习惯:变量名小写,常量名大写,但不绝对程序员习惯:变量名小写,常量名大写,但不绝对4 (3)(3)标识符不能与标识符不能与““关键字关键字””同名,也不与系统预先定义的同名,也不与系统预先定义的““标准标识符标准标识符””同名,如同名,如mainmain、、printfprintf等 在定义标识符时,建议遵循下面的原则:在定义标识符时,建议遵循下面的原则:⑴ ⑴ 尽量不要用下划线开头尽量不要用下划线开头因为系统内部使用了一些下因为系统内部使用了一些下划线开头的标识符(如划线开头的标识符(如_ _fdfd、、_ _cscs、、_ _ssss),避免与系统定义),避免与系统定义的标识符冲突的标识符冲突⑵ ⑵ 尽量做到尽量做到“见名知义见名知义”,,例如,例如,name/name/xmxm(姓名)、(姓名)、sex/sex/xbxb(性别)、(性别)、age/age/nlnl(年龄)、(年龄)、salary/salary/gzgz(工资)。

      工资)⑶ ⑶ 变量名、函数名用小写,符号常量用大写变量名、函数名用小写,符号常量用大写⑷⑷ 在容易出现混淆的地方应尽量避免使用容易认错的字在容易出现混淆的地方应尽量避免使用容易认错的字符如:数字如:数字1 1与字母与字母L L和字母和字母I I,数字,数字0 0与字母与字母o o和和O O,数字,数字2 2与字母与字母Z Z和和z z 5 3. 关键字关键字 关键字是关键字是C语言预先定义的、具有特定意义的标识符,语言预先定义的、具有特定意义的标识符,也称为保留字也称为保留字C语言包括32个关键字: autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsigned voidvolatilewhileC语言的关键字都是小写不能重新定义关键字,也不能语言的关键字都是小写不能重新定义关键字,也不能把关键字定义为一般标识符把关键字定义为一般标识符。

      6 算术运算符:算术运算符:+ - * / % ++ --+ - * / % ++ --关系运算符:关系运算符:< <= == > >= !=< <= == > >= !=逻辑运算符:!逻辑运算符:! && ||&& ||位运算符位运算符 ::<< >> ~ | ^ &<< >> ~ | ^ &赋值运算符:赋值运算符:= = 及其扩展及其扩展条件运算符:条件运算符:?:?:逗号运算符:逗号运算符:, ,指针运算符:指针运算符:* * & &求字节数求字节数 ::sizeofsizeof强制类型转换:强制类型转换:( (类型)类型)分量运算符:分量运算符:. ->. ->下标运算符:下标运算符:[][]其它其它 ::( )( )4.4.运算符运算符:根据参与运算的操作数个数,运算符分为:单目(一元)运算符、双目(二元)运算符和三目(三元)运算符 7 5.5. 分隔符分隔符 就像写文章要有标点符号一样,写程序也要有一些就像写文章要有标点符号一样,写程序也要有一些分隔符。

      在分隔符在C C语言程序中,空格、逗号、回车语言程序中,空格、逗号、回车/ /换行等,在换行等,在各自不同的应用场合起着分隔符的作用各自不同的应用场合起着分隔符的作用 例如:例如: intint x,yx,y; ; 6. 6. 其他符号其他符号 花括号花括号“{ {”和和“} }”通常用于标识函数体或者一个语通常用于标识函数体或者一个语句块(即复合语句)句块(即复合语句) “/*/*”和和“* */ /”构成一组注释符编译系统将构成一组注释符编译系统将/* ... /* ... */*/之间的所有内容看作注释,编译时编译系统忽略注释之间的所有内容看作注释,编译时编译系统忽略注释8 C语言的数据类型语言的数据类型C语言提供的数据结构,是以数据类型形式出现的具体分类如下:字字符符型型(char)实型实型(浮点型浮点型)单精度型单精度型(float)双精度型双精度型(double)整型整型短整型短整型(short int)整型整型(int)长整型长整型(long int)枚举类型枚举类型(enum)数组类型数组类型结结 构构 体体 类类 型型(struct)共用体类型共用体类型(union)文件类型文件类型(FILE)基本类型基本类型构造类型构造类型指针类型指针类型空空类类型型(void)C数据类型数据类型注:注:C C语言中的数据,语言中的数据,有常有常量和变量之分量和变量之分,它们分,它们分别属于这些类型。

      别属于这些类型 本本章章将将重重点点介介绍绍基基本本类类型型中中的的整整型型、、实实型型和和字字符符型型三三种种数数据据其其他他类类型型会会在在后后面面章章节节陆陆续续介绍9 常量和变量常量和变量一、常量一、常量1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量在程序运行过程中,其值不能被改变的量称为常量2.常量的分类((1 1)整型常量)整型常量(如(如1212、、0 0、、-3-3为整型常量)为整型常量)((2 2)实型常量)实型常量((4.64.6、、-1.23-1.23为实型常量)为实型常量)((3 3)字符常量)字符常量(( ’a a’、、’d d’字符常量)字符常量)((4 4)符号常量)符号常量常量的类型,可通过书写形式来判别10 符号常量符号常量:: 有有时时为为了了使使程程序序更更加加清清晰晰和和便便于于修修改改,,用用一一个个标标识识符符来来代代表表常常量量,,即即给某个常量取个有意义的名字,这种常量称为符号常量给某个常量取个有意义的名字,这种常量称为符号常量 如:如:#define PI 3.1416#define PI 3.1416使用符号常量的好处:使用符号常量的好处:(( 1 1)含义清楚、见名知意。

      含义清楚、见名知意 2 2)修改方便、一改全改修改方便、一改全改例:符号常量应用例:符号常量应用#define PI 3.1416#define PI 3.1416void main()void main(){ { float area; float area; area=10* area=10*1010*PI;*PI; printf("areaprintf("area=%=%f\n",areaf\n",area););} }结果:结果:area=314.160000area=314.16000011 二、变量二、变量1.变量的概念 在程序运行过程中,其值可以被改变的量称为变量在程序运行过程中,其值可以被改变的量称为变量2.变量的两个要素(1)变变量量名名每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则2)变变量量值值在程序运行过程中,变量值存储在内存中在程序中,通过变量名来引用变量的值 实实际际上上变变量量是是内内存存中中的的一一个个存存储储区区,,在在存存储储区区中中存存放放着着该该变变量量的的值值,,每每个个变变量量有有一一个个名名字字,,如如::x x,,sumsum,,areaarea等。

      等12 3.变量的定义与初始化在在CC语语言言中中,,要要求求对对所所有有用用到到的的变变量量,,必必须须先先定定义义、、后后使使用用;;定定义义变变量量的的目目的的是是为为变变量量在在内内存存中中申申请请存存放放数数据据的的内内存存空间在定义变量的同时进行赋初值的操作为在定义变量的同时进行赋初值的操作为变量初始化变量初始化1)变量定义的一般格式 数据类型 变量名[, 变量名2……];例如,float radius, length, area; (2)变量初始化的一般格式 数据类型 变量名[=初值][, 变量名2[=初值2]……];例如,float radius=2.5, length=2.5, area=2.5; 但 float radius=length=area=2.5;是错误的!13 基本数据类型 C语言的基本数据类型包括:Ø整型Ø实型Ø字符型Ø枚举型(本次课不讲)14 整型数据整型数据1. 1. 整型常量整型常量 整型常量即整型常数C语言中,整型常量可用3种表示方式:⑴ ⑴ 十进制数:十进制数:以非0数字开头的数,如123,-5,0⑵ ⑵ 八进制数:八进制数:以数字0开头的数,如0123表示八进制数(123)8,等于十进制数83。

      ⑶ ⑶ 十六进制数:十六进制数:以0x或0X开头的数,如0x123表示十六进制数(123)16,等于十进制数29115 2.2.整型变量整型变量C C语言中的整型变量分为语言中的整型变量分为short int、、int和和long int三三种类型,每种类型又分为种类型,每种类型又分为有符号类型有符号类型和和无符号类型无符号类型,分别,分别用用unsigned和和signed表示,缺省为表示,缺省为signedsigned类型 类型类型比特数比特数最小取值范围最小取值范围[signed] [signed] intint1616 -32768-32768~~32767 32767 即即-2-21515~(~(2 21515-1-1))unsigned [unsigned [intint] ]1616 0 0~~65535 65535 即即0 0~(~(2 21616-1-1))[signed] short [[signed] short [intint] ]1616 -32768-32768~~32767 32767 即即-2-21515~(~(2 21515-1-1))unsigned short [unsigned short [intint] ]1616 0 0~~65535 65535 即即0 0~(~(2 21616-1-1))long [long [intint] ]3232-2147483648-2147483648~~2147483647 2147483647 即即-2-23131~(~(2 23131-1-1))unsigned long [unsigned long [intint] ]3232 0 0~~4294967295 4294967295 即即0 0~(~(2 23232-1-1)) 如果在整常数后面加字母如果在整常数后面加字母U U或或u u,表示,表示short short intint型常数;型常数;加字母加字母L L或或l l表示表示long long intint型常数。

      型常数16 显然,不同类型的整型变量,其值域不同显然,不同类型的整型变量,其值域不同占用内存字占用内存字节数为节数为n的(有符号)整型变量,其值域为:的(有符号)整型变量,其值域为:-2n*8-1~((2n*8-1-1););无符号整型变量的值域为:无符号整型变量的值域为:0~((2n*8-1)整型变量的定义整型变量的定义变量的定义形式为:变量的定义形式为: 数据类型数据类型 变量名表变量名表;其中变量名表的变量可为其中变量名表的变量可为1个或多个,中间用逗号个或多个,中间用逗号“,”分隔如:如:int a,b,sum; unsigned long x;17 实型数据实型数据一、实型变量一、实型变量 C语言的实型变量,分为三种:C语言的实型变量,分为三种: ((1 1)单精度型单精度型类型关键字为类型关键字为floatfloat,,一般占一般占4字节4字节(32位)、提供(32位)、提供6-6-7位7位有效数字有效数字 ((2 2)双精度型双精度型类型关键字为类型关键字为doubledouble,,一般占一般占8个8个字节字节、提供、提供15-1615-16位位有效数字。

      有效数字3 3)长双精度型长双精度型类型关键字为类型关键字为long double,long double,一般占一般占1010个字节个字节、提供、提供1818--1919位位有效数字有效数字18 二、实型常量二、实型常量 11. .表示形式表示形式 实型常量即实数,实型常量即实数,在C语言中又称在C语言中又称浮点数浮点数,其值有,其值有两种表达形式:两种表达形式: ((1 1)十进制形式十进制形式由数字和小数点组成(必须有小由数字和小数点组成(必须有小数点),但小数点前后的数点),但小数点前后的0 0可以省略,可以省略,如如0.120.12,,.12.12,,123.0123.0,,123.123.,,0.0.等 ((2 2)指数形式:)指数形式:< <尾数尾数>E>E((e e))< <整型指数整型指数> >注意注意e e(或(或E E)前面要有数字,且)前面要有数字,且e e(或(或E E)后面的指数必须为整)后面的指数必须为整数如1.E21.E2,,2.3e3.52.3e3.5,,e2e2等都是不合法的表示形式等都是不合法的表示形式。

      22. .关于类型关于类型 一个实型常数默认为一个实型常数默认为doubledouble型要表示型要表示floatfloat型数,型数,则必须在实数后加上字母则必须在实数后加上字母f f或或F F表示long doublelong double型数,型数,则必须在实数后加字母则必须在实数后加字母l l或或L L19 “规范化的指数形式规范化的指数形式”:在字母在字母e(或或E)之前的小数部之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数分中,小数点左边应有一位(且只能有一位)非零的数字一个实数在用指数形式输出时,是按规范化的指数字一个实数在用指数形式输出时,是按规范化的指数形式输出的形式输出的说明:1.123.456E0123.456E012.3456E112.3456E11.23456E21.23456E20.123456E30.123456E31234.56E-11234.56E-1123.456123.456规范化的指数形式规范化的指数形式20 字符型数据字符型数据一、字符常量一、字符常量1.1.字符常量的定义字符常量的定义用一对单引号括起来的单个字符,称为字符常量。

      用一对单引号括起来的单个字符,称为字符常量例如,例如,‘‘A’A’、、‘‘11’’、、‘‘++’’等2.2.转义字符转义字符C语言还允许使用一种特殊形式的字符常量,就是以C语言还允许使用一种特殊形式的字符常量,就是以反斜杠反斜杠““\ ”\ ”开头的转义字符,意思是将反斜杠后面的字开头的转义字符,意思是将反斜杠后面的字符转变成另外的意义符转变成另外的意义 注意:如果反斜杠或单引号本身作为字符常量,必须注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:使用转义字符:‘‘\\\\’’、、‘‘\’\’’’21 转义字符含   义ASCII值\0表示字符串结束0\n换行,将当前位置移到下一行开头10\t水平制表(跳到下一个Tab的位置)9\v垂直制表11\b左退一格8\r回车,将当前位置移到本行开头13\f换页,将当前位置移到下页开头12\a响铃7\'单引号39\"双引号34\\反斜杠“\”92\ddd1到3位八进制数代表的字符\xhh1到2位十六进制所代表的字符22 “\ddd”、、“\xhh”是用是用ASCII码表示一个字码表示一个字符如如'\101'、、'\x41'代表代表ASCII为为65的字符的字符'A';;'\012'、、'\xa'代表代表ASCII码为码为10的换行符的换行符等。

      用这种方法可以表示任何可输出的字母字等用这种方法可以表示任何可输出的字母字符、专用字符、图形字符和控制字符符、专用字符、图形字符和控制字符说明:23 例:例: void main() { printf(“\x4F\x4B\x21\n”); /* 等价于等价于printf(“OK!\n”); */ printf(“\x15 \xAB\n”); }OK!OK!§½[程序演示程序演示]printf(printf(“\xf\xf”) )24 二、字符变量二、字符变量1.定义定义字符变量用来存放字符常量注意只能存放一个字符字符变量用来存放字符常量注意只能存放一个字符定义形式:定义形式:          char c1,c2;c1='a'; c2='b';  一般以一个字节来存放一个字符,或者说一个  一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节字符变量在内存中占一个字节25 字符数据在内存中的存储形式及使用方法字符数据在内存中的存储形式及使用方法1.1. 字符数据在内存中以相应的字符数据在内存中以相应的ASCII码存放码存放, 占占1个字节个字节2.2. 字符数据和整数在一定范围内互相通用字符数据和整数在一定范围内互相通用9798c1='a'c2='b'011000010110001026 2.特性特性字符数据在内存中存储的是字符的字符数据在内存中存储的是字符的ASCII码码── 一个无一个无符号整数,其形式与整数的存储形式一样,所以C语言允符号整数,其形式与整数的存储形式一样,所以C语言允许字符型数据与整型数据之间通用。

      许字符型数据与整型数据之间通用1)一个字符型数据,既可以字符形式输出,也可以整数形式输出一个字符型数据,既可以字符形式输出,也可以整数形式输出 例:字符变量的字符形式输出和整数形式输出例:字符变量的字符形式输出和整数形式输出 void 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=bch1=97,ch2=98 27 ((2))允许对字符数据进行算术运算,此时就是对它允许对字符数据进行算术运算,此时就是对它们的们的ASCII码值进行算术运算码值进行算术运算例例::字字符符数数据据的的算算术术运运算算 void main() { char ch1,ch2; ch1=‘a’; ch2=‘B’; /*字字母母的的大大小小写写转转换换*/ printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32); /*用用字字符符形形式式输输出出一一个个大大于于256的的数数值值*/ printf("ch1+200=%d\n", ch1+200); printf("ch1+200=%c\n", ch1+200); printf("ch1+256=%d\n", ch1+256); printf("ch1+256=%c\n", ch1+256); }运行结果:运行结果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a思思考考题题::用用字字符符形形式式输输出出一一个个大大于于256的的数数值值,,会会得得到什么结果?到什么结果?28 main( ){ int i; char c; i='a'; c=97; printf("%c,%d\n",c,c); printf("%c,%d\n",i,i);}输出结果为输出结果为:a,97      a,97((3)字符数据和整型数据还可以相互赋值。

      字符数据和整型数据还可以相互赋值29 三、字符串常量三、字符串常量1.字符串常量的概念和字符串长度字符串常量的概念和字符串长度字符串常量字符串常量是用一对是用一对双引号双引号括起来的若干字符序列括起来的若干字符序列字符串中字符的个数称为字符串中字符的个数称为字符串长度字符串长度长长度度为为0的的字字符符串串((即即一一个个字字符符都都没没有有的的字字符符串串))称称为为空空串,表示为串,表示为“” (一对紧连的双引号)一对紧连的双引号)30 例如,例如,“How do you do.”、、“Good morning.”等,等,都是字符串常量,其长度分别为都是字符串常量,其长度分别为14和和13(空格也是一个(空格也是一个字符) 如果反斜杠和双引号作为字符串中的有效字符,则如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符必须使用转义字符例如:(例如:(1))C:\msdos\v6.22 → "C:\\msdos\\v6.22" ((2))I say:"Goodbye!" → "I say:\"Goodbye!\""31 2.字符串的存储字符串的存储C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个个‘\0’作为字符串的结束标志。

      作为字符串的结束标志注意:在源程序中书写字符串常量时,不必加结束字符注意:在源程序中书写字符串常量时,不必加结束字符‘\0’,否则,否则画蛇添足画蛇添足 如果有一个字符串为如果有一个字符串为“CHINA”,则它在内存中的实际存储如下,则它在内存中的实际存储如下所示:所示:最后一个字符最后一个字符'\0'是系统自动加上的,它占用6字节而非5字节内存是系统自动加上的,它占用6字节而非5字节内存空间CHINA\032 综上所述,字符常量综上所述,字符常量'A''A'与字符串常量与字符串常量"A""A"是两回事:是两回事:((1 1))定定界界符符不不同同::字字符符常常量量使使用用单单引引号号,,而而字字符符串串常量使用双引号;常量使用双引号;((2 2))长长度度不不同同::字字符符常常量量的的长长度度固固定定为为1 1,,而而字字符符串串常量的长度,可以是常量的长度,可以是0 0,也可以是某个整数;,也可以是某个整数;((3 3))存存储储要要求求不不同同::字字符符常常量量存存储储的的是是字字符符的的ASCIIASCII码码值值,,而而字字符符串串常常量量,,除除了了要要存存储储有有效效的的字字符符外外,,还还要要存储一个结束标志存储一个结束标志’’\0’\0’。

      33 指针类型指针类型1 1、、、、地址地址地址地址        在计算机中,把内存区划分为一个一个的存储单元,每个单元在计算机中,把内存区划分为一个一个的存储单元,每个单元在计算机中,把内存区划分为一个一个的存储单元,每个单元在计算机中,把内存区划分为一个一个的存储单元,每个单元为一个字节(8位),它们都有一个编号,这个编号就是为一个字节(8位),它们都有一个编号,这个编号就是为一个字节(8位),它们都有一个编号,这个编号就是为一个字节(8位),它们都有一个编号,这个编号就是内存单元内存单元内存单元内存单元的地址的地址的地址的地址说明:说明:说明:说明:1 1、每个变量都占有各自的内存单元,具、每个变量都占有各自的内存单元,具、每个变量都占有各自的内存单元,具、每个变量都占有各自的内存单元,具有相应的地址有相应的地址有相应的地址有相应的地址 2 2、一个变量所占有的内存单元个数是由、一个变量所占有的内存单元个数是由、一个变量所占有的内存单元个数是由、一个变量所占有的内存单元个数是由其类型决定的其类型决定的其类型决定的其类型决定的3 3、首地址:变量所占第、首地址:变量所占第、首地址:变量所占第、首地址:变量所占第1 1个字节的地址个字节的地址个字节的地址个字节的地址4 4、注意、注意、注意、注意表示地址的数表示地址的数表示地址的数表示地址的数与与与与整数整数整数整数的不同:属的不同:属的不同:属的不同:属于不同的数据类型于不同的数据类型于不同的数据类型于不同的数据类型( (指针、整型指针、整型指针、整型指针、整型) )34 2 2、、、、指针指针指针指针        一个变量占有内存单元,具有相应的地址,通过地址能找到所一个变量占有内存单元,具有相应的地址,通过地址能找到所一个变量占有内存单元,具有相应的地址,通过地址能找到所一个变量占有内存单元,具有相应的地址,通过地址能找到所需的变量,可以说:需的变量,可以说:需的变量,可以说:需的变量,可以说:地址地址地址地址“ “指向指向指向指向” ”该变量该变量该变量该变量。

              因此,把一个因此,把一个因此,把一个因此,把一个变量的地址变量的地址变量的地址变量的地址称为该变量的称为该变量的称为该变量的称为该变量的“ “指针指针指针指针” ”        可以定义一种变量,专门用来存放其它变量的地址(指针),可以定义一种变量,专门用来存放其它变量的地址(指针),可以定义一种变量,专门用来存放其它变量的地址(指针),可以定义一种变量,专门用来存放其它变量的地址(指针),这种变量称为这种变量称为这种变量称为这种变量称为指针变量指针变量指针变量指针变量变量的指针变量的指针变量的指针变量的指针就是变量的地址就是变量的地址就是变量的地址就是变量的地址指针变量指针变量指针变量指针变量就是存放变量地址的变量就是存放变量地址的变量就是存放变量地址的变量就是存放变量地址的变量整型变量整型变量整型变量整型变量i i指针变量指针变量指针变量指针变量ipip如何使如何使如何使如何使ipip和和和和i i建立联系?建立联系?建立联系?建立联系?赋值:赋值:赋值:赋值:ipip=&i;=&i;101020002000i i30003000ipip2000200035 算术运算与算术表达式算术运算与算术表达式在C语言中,除控制语句和输入输出函数外,其它所在C语言中,除控制语句和输入输出函数外,其它所有基本操作都作为运算符处理。

      有基本操作都作为运算符处理1.五种基本算术运算符五种基本算术运算符 +、、-(减法(减法/取负)、取负)、*、、/、、%(求余数)(求余数)((1)关于除法运算)关于除法运算 /C语言规定:两个整数相除,其商为整数,小数部分被舍弃语言规定:两个整数相除,其商为整数,小数部分被舍弃 例如,例如,5 / 2 = 22)关于求余数运算)关于求余数运算 %% 5%2=1要求两侧的操作数均为整型数据,否则出错要求两侧的操作数均为整型数据,否则出错2.表达式和算术表达式表达式和算术表达式((1)表达式的概念)表达式的概念 用用运运算算符符和和括括号号将将运运算算对对象象((常常量量、、变变量量和和函函数数等等))连连接接起起来来的、符合C语言语法规则的式子,称为表达式的、符合C语言语法规则的式子,称为表达式36 ((2 2)算术表达式的概念)算术表达式的概念表达式中的运算符都是算术运算符表达式中的运算符都是算术运算符例例如如,,3 3 + + 6 6 * * 9 9、、(x (x + + y) y) / / 2 2 - - 1 1等等,,都都是是算算术术表表达式。

      达式37 3.运算符的优先级和结合性运算符的优先级和结合性 运算符有优先级和结合性,在求表达式的值时,运算符有优先级和结合性,在求表达式的值时,要按照优先级的高低依次计算,如果运算对象两侧要按照优先级的高低依次计算,如果运算对象两侧的优先级相同,则按规定的结合方向进行的优先级相同,则按规定的结合方向进行38 §优先级优先级- - (负号运算符)(负号运算符)* / % + - - (加减运算符)(加减运算符) 我最高! 我最低!39 §结合性结合性注:注: 取负运算符的结合性是自右向左取负运算符的结合性是自右向左所谓所谓结合性结合性是指,当一个操作数两侧的运算符具有相同是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合右边的运算符结合自左至右的结合方向,称为左结合性反之,称为右结自左至右的结合方向,称为左结合性反之,称为右结合性结合性是C语言的独有概念除结合性是C语言的独有概念除单目单目运算符、运算符、赋值赋值运算运算符和符和条件条件运算符是右结合性外,其它运算符都是左结合性。

      运算符是右结合性外,其它运算符都是左结合性40 表达式求值表达式求值1)按运算符的优先级高低次序执行按运算符的优先级高低次序执行 例如,例如, 3 + 6 * 9、、(x + y) / 2 - 1 2))如如果果在在一一个个运运算算对对象象((或或称称操操作作数数))两两侧侧的的运运算算符符的的优优先级相同,则按C语言规定的结合方向(结合性)进行先级相同,则按C语言规定的结合方向(结合性)进行例例如如,,算算术术运运算算符符的的结结合合方方向向是是“自自左左至至右右”,,即即::在在执执行行“a – b + c”时,变量时,变量b先与减号结合,执行先与减号结合,执行“a - b”;然后再执行加;然后再执行加c的运算41 不同类型数据的混合运算不同类型数据的混合运算§C语语言言中中,,整整型型、、实实型型和和字字符符型型数数据据间间可可以以混混合合运运算算((因因为为字字符数据与整型数据可以通用)符数据与整型数据可以通用)1)(1)当当运运算算符符两两侧侧的的数数据据类类型型不不同同时时,,不不同同类类型型的的数数据据要要先先转转换换成成同一类型,然后进行运算转换的规则如图所示:同一类型,然后进行运算。

      转换的规则如图所示: 高高 double float long unsigned 低低 int char, short 42 例如例如:(double)a (等价于(等价于(double)(a)) /*将变量将变量a的值转换成的值转换成double型型*/(int)(x + y) /*将将x+y的结果转换成的结果转换成int型型*/(float)5 / 2((等等价价于于(float)(5)/2)) /*将将5转转换换成成实实型型,,再再除除以以2((=2.5))*/(float)(5 / 2) /*将将 5整整 除除 2的的 结结 果果 (( 2)) 转转 换换 成成 实实 型型((2.0))*/注注意意::强强制制转转换换类类型型得得到到的的是是一一个个所所需需类类型型的的中中间间量量,,原原表表达式类型并不发生变化。

      达式类型并不发生变化例如例如: :若若x x原为实型变量且值为原为实型变量且值为2.62.6,在执行,在执行i=(i=(int)xint)x后得到后得到一个整数一个整数2 2,并把它赋给整型变量,并把它赋给整型变量i i,但,但x x仍为实型,值为仍为实型,值为2.62.62)除自动转换外,C语言也允许强制转换除自动转换外,C语言也允许强制转换 数据类型强制转换的一般格式为:数据类型强制转换的一般格式为: (要转换成的数据类型要转换成的数据类型)(被转换的表达式被转换的表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省44 赋值运算符赋值运算符=+ =- =* =/ =%=45 简单的赋值运算符简单的赋值运算符§简单的赋值就是把一个表达式的值赋给一个变量简单的赋值就是把一个表达式的值赋给一个变量例如:例如: i = 5;; i = j + 1;;简单的赋值运算符简单的赋值运算符如果表达式值的类型,与被赋值变量的类型不一致,如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。

      换成被赋值变量的数据类型,然后再赋值给变量不不会出错,自动转换会出错,自动转换))46 i + = 2 等价于等价于 i = i + 2 a * = b + 5 等价于等价于 a = a * (b + 5) x% = 3 等价于等价于 x = x%3复合的赋值运算符复合的赋值运算符§在赋值符在赋值符““=”=”之前加上其他运算符,可以构成复合的运之前加上其他运算符,可以构成复合的运算符C语言规定的语言规定的10种复合赋值运算符如下:种复合赋值运算符如下:+=,,-=,,*=,,/=,,%=;; /*复合算术运算符(复合算术运算符(5个)个)*/&=,,^=,,|=,,<<=,,>>=;; /*复合位运算符(复合位运算符(5个)个)*/例如:例如:复合的赋值运算符复合的赋值运算符• C语言采用这种复合运算符,一是为了简化程序,使程序语言采用这种复合运算符,一是为了简化程序,使程序精炼;二是为了提高编译精炼;二是为了提高编译效率47 赋值表达式赋值表达式§由由赋赋值值运运算算符符将将一一个个变变量量和和一一个个表表达达式式连连接接起起来来的的式式子子称称为为赋值表达式。

      赋值表达式§形式:形式: 〈〈变量变量〉〉 〈〈赋值运算符赋值运算符〉〉 〈〈表达式表达式〉〉 例如:例如: x=3;;y=x+3§对对赋赋值值表表达达式式求求解解的的过过程程是是::将将赋赋值值运运算算符符右右侧侧的的表表达达式式的的值赋给左侧的变量值赋给左侧的变量赋值表达式的值就是被赋值的变量的值赋值表达式的值就是被赋值的变量的值 例例如如,,““a a = = 5”5”这这个个赋赋值值表表达达式式,,变变量量a a的的值值““55””就就是是它的值48 §结合性结合性 例如:例如: a=b=8 等价于等价于 a=(b=8) 赋值运算符的结合性赋值运算符的结合性49 一、自增和自减运算符一、自增和自减运算符§++++ 运算符的作用是使变量的值增运算符的作用是使变量的值增1 1§---- 运算符的作用是使变量的值减运算符的作用是使变量的值减1 1§常见的用法有:常见的用法有:++i , - - i 在使用在使用i前,先使前,先使i的值加的值加1或减或减1i++ , i - - 在使用在使用i后,再使后,再使i的值加的值加1或减或减1C C语言特有的运算和运算符语言特有的运算和运算符50 例题例题§已知 i=5 j=i++; j=? i=? j=++i; j=? i=? 566651 §在逗号表达式中,逗号是一种运算符。

      在逗号表达式中,逗号是一种运算符§形式如下形式如下 表达式表达式1 1,表达式,表达式2 2,,……,表达式,表达式n n§由由逗逗号号隔隔开开的的若若干干表表达达式式从从左左向向右右进进行行计计算算,,其其求求解解过过程程为为::先先求求解解表表达达式式1 1,,再再求求表表达达式式2 2,,......,,最最后后求求表表达达式式n n,,整整个个逗号表达式的值是表达式逗号表达式的值是表达式n的值二、逗号二、逗号运算符和逗号表达式运算符和逗号表达式53 例如,例如,逗号表达式:逗号表达式:a = 3 * 5, a * 4先先求求解解a = 3 * 5,,得得a=15;;再再求求a * 4 = 60,,所所以以逗逗号号表表达达式的值式的值=60逗号表达式:逗号表达式:(a = 3 * 5, a * 4), a + 5先先求求解解a = 3 * 5,,得得a=15;;再再求求a * 4=60;;最最后后求求解解a + 5=20,所以逗号表达式的值,所以逗号表达式的值=20注注意意::并并不不是是任任何何地地方方出出现现的的逗逗号号,,都都是是逗逗号号运运算算符符。

      很很多情况下,逗号仅用作分隔符多情况下,逗号仅用作分隔符逗号运算符是所有运算符中级别最低的逗号运算符是所有运算符中级别最低的。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.