资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基本数据类型及运算符 uC语言标识符和关键字uC语言的基本数据类型u常量的定义和使用方法u变量的定义和使用方法u表达式及各种运算符的使用u各种数据类型之间的相互转换u位运算符的使用C语言标识符计算机程序处理的对象是数据,编写程序也就是描述对数据 的处理过程。在程序中通过名字建立定义与使用的关系。为了这 种需要,每种程序语言都规定了在程序里如何描述名字,程序语 言的名字通常被称为“标识符”。直接地说,标识符就是一个名字,像后面介绍的符号常量名 、变量名、函数名、标号、数组名、文件名、结构类型名和其他 各种用户定义的对象名都是标识符,它们的命名必须满足标识符 的构成规则。 C语言中允许用作标识符的字符有:u26个英文字母,包括大小写(共52个)u数字0,l,9u下划线 标识符的构成规则为:u必须由字母(az,AZ)或下划线(_)开头u后面可以跟随任意的字母、数字或下划线在C语言中,大小写字母有不同的含义,例如:num, Num,NUM为三个不同的标识符。在构造标识符时,应注意做到“见名知意”,即选择 有含义的英文单词(或汉语拼音)作标识符,以增加程 序的可读性。如表示年可以用year,表示长度可用 length,表示和可以用sum等。C语言中有一些标识符被称为关键字,在系统中具有 特殊用途,不能作为一般标识符使用,如用于整型变量 定义的int关键字,就不能再用作变量名。有些标识符虽不是关键字,但C语言总是以固定的形 式用于专门的地方,因此,用户也不要把它们当做一般 标识符使用,以免造成混乱。这些常用的标识符有: define,include,ifdef,ifndef,endif,elif。例如,以下均是合法的标识符: sum, a1, i, j5k3, sum_avg 以下均是不合法的标识符: 5i/*错在以数字开头*/ u.s/*错在出现“.”*/ good bay/*错在中间有空格*/在所有合法C标识符中有一个特殊的小集合,其中的标识符称为C语言 的“关键字”。作为关键字的每个标识符在C程序中都有语言里预先定义 好的特殊意义;这些关键字不能用于任何其他目的,例如,不能用关键字 为程序中自己的东西命名。C语言的关键字总共有32个,下面列出了全部 关键字。 autobreakcasechar const continuedefaultdo doubleelseenumextern floatforgotoif intlongregisterreturn shortsignedsizeofstatic structswitchtypedefunion unsignedvoidvolatilewhile基本数据类型 C语言有五种基本数据类型:字符、整型、单精度实型、双精度 实型和空类型。尽管这几种类型数据的长度和范围随处理器的类型 和C语言编译程序的实现而异,但以bit为例,整数与CPU字长相等 ,一个字符通常为一个字节,浮点值的确切格式则根据实现而定。 对于多数32位的计算机,表2-1给出了五种数据的长度和范围。类型长度 (bit)范围char(字符 型)80255int(整型)32-2 147 483 6482 147 483 647 Float(单精 度型)32约精确到6位 数 double(双 精度型)64约精确到12位 数 void(空值 型)0无值除void类型外,基本类型的前面可以有各种修饰符。修饰符用来改 变基本类型的意义,以便更准确地适应各种情况的需求。修饰符如下 :signed(有符号)unsigned(无符号)long(长型符)short(短型符)short只能修饰int,且short int可省略为short。long只能修饰int和double,修饰为long int时,可省略为long。unsigned和signed只能修饰char和int,一般情况下,char和int默 认为signed型。实型数float和double总是有符号的,不能用 unsigned修饰。常量 在程序运行中,其值不能被改变的量称之为常 量。在基本数据类型中常量分为整型常量、实型 常量、符号常量和字符型常量(含字符常量和字 符串常量)。1. 整型常量整型常量即为整型常数,可用十进制、八进制和十六进制3种形式表示 。*十进制整型常量由0至9的数字组成,没有前缀,不能以0开始,没有 小数部分。如:-123,0,456等。*八进制整型常量以0为前缀,其后由0到7的数字组成,没有小数部分 。如:0123(等于十进制数的83),047(等于十进制数的39)。*十六进制整型常量以0x或0X为前缀,其后由0到9的数字和A到F(大 小写均可)的字母组成,没有小数部分。如:0x123(等于十进制数 的291),0X7A(等于十进制数的122)。整型常量中的长整型数据可用L(或小写字母l)作后缀来表示。 如:1234L,5678l等。整型常量中的无符号型数据可用 U(或u)作后缀来表示。如: 1234U,5678u等。如果一个整型常量的后缀是U(或u)和 L(或l) ,或者是L和U,都表示为unsigned long类型的常量。如:12345UL ,67890ul等。2. 实型(浮点型)常量实型常量是由整数部分和小数部分组成的,它只有十 进制的两种表示形式。 (1)定点数形式。它由数字和小数点组成。整数和小 数部分可以省去一个,但不可两者都省,而且小数点不 能省。如:1.234,.123,123.,0.0等。 (2)指数形式(或称科学表示法)。它是在定点数形 式表示法后加e(或E)和数字来表示指数。指数部分可 正可负,但须为整数,且应注意字母e(或E)之前必须 有数字。如:1.234e3,12.34e2均合法地代表了 1.234103;而e3,1e2.3,.e3,e均不合法。另外,实型常量的后缀用F(或f)表示单精度型,而 后缀用L(或l)表示长双精度型。如:0.5e2f表示单精 度数,3.6e5L表示长双精度数。3. 符号常量在程序中,可以定义一个符号来代表一个常量,这种相应的 符号称为符号常量。例如,用PI代表圆周率,即3.1415926。 使用符号常量有许多好处。一是增加可读性。在程序中出现具有一定意义的符号常量时,一看便能帮助读 者了解其含义,即见名知义。如:PI代表,NAME代表姓名等 。二是提高了可维护性。使用符号常量可使修改该常量变得更加方便。例如:在程序 中直接使用某个常量,且该常量在程序中多处出现,若需修改 该常量时,则需在每处出现该常量的地方都要加以修改,容易 漏改或改错。如果使用符号常量,则只要修改其定义处即可, 即一改全改。如:程序中出现某职工的姓名,且多处需要用此 姓名,若用NAME符号常量代表姓名,一旦需要改变姓名,只要 修改NAME的定义处即可。在C语言中,是用预编译处理命令#define来定义符号常量 。如: #define PI 3.1415926 #define NAME “姚木兰“这种语句的格式是在#define后面跟一个标识符和一串字符 ,彼此之间用空格隔开。由于它不是C语句,故语句末不用分 号(;)。当程序被编译时,它先被编译预处理。即预处理遇 到#define时,就用标识符后的字符串替换程序中的所有该标 识符。习惯上,符号常量标识符用大写字母写出,以示与变量名 区别。另外,符号常量标识符一旦定义,就不能在其他地方 给该标识符再赋值。如:PI=3.14;是错误的。 字符型常量包含字符常量和字符串常量两类。1. 字符常量用一对单引号括起来的一个字符称为字符常量。例如 :a、A、3、?等。它的实际含义是该 字符在内存中的编码值,常用的是以ASCII编码来表示 字符,如:a的编码值是97,A的编码值是65, 3的编码值是51而不是数值3。除了以上形式的字符常量外,C还允许使用一种特殊 形式的字符常量,即以反斜杠符()开头,后跟字符 的字符序列,称之为转义字符常量,用它来表示控制及 不可见的字符(见表2-2),它同样表示的是该转义字 符的ASCII码值,如n表示换行,其ASCII码值为10,a 表示响铃,其ASCII码值为7等。转义字符意义ASCII码a响铃0x07n换行0x0at横向跳格0x09v竖向跳格0x0bb退格( Backspace)0x08r回车0x0df换页(走纸)0x0c0空字符0x00反斜杠0x5c单引号0x27“双引号0x22ddd13位八进制 数所代表的字 符对应字符的 ASCII转义字符ddd(为八进 制数字,07之一)将字 符的ASCII码值转换为对 应的字符,它表示任一个 字符。例如,101表示 字符A,012表示转 义字符n,0或 000表示ASCII码为0的 控制字符,即“空”字符 。2. 字符串常量 字符串常量是用一对双引号(“)括起来的零个或多个字符的序列 ,例如: “This is a string“ “5401349“ “10000.00“ “ “/*引号中有一个空格,本书中用 表示一个空格*/ “ /*引号中什么也没有*/ “a“/*引号中有一个转义字符*/ 字符串常量在内存中存储时,系统自动在每个字符串常量的尾部加 一个“字符串结束标志”字符0。因此,长度为n个字符的字符串常 量,在内存中要占用n+1个字节的空间。 例如,“hello“在内存中的形式是: 104 101 108 108 111 0 为了能直观理解,以后表示字符串时,直接用字符本身表示。上例 表示成: hello0分析【程序2-2】的运行结果。 /* 文件名:chap02_2.cpp */ #include #include void main() char *cstr=“Chinaan101t“; printf(“%dn“,strlen(cstr); printf(“%sn“,cstr); 程序运行结果: 10 China A 程序中“Chinaan101t“是一个符号常量,由字符指针cstr指向它(有关字 符指针的内容在后续章节中介绍)。该符号常量似乎有17个字符,事实上 ,它只有10个字符,分别是C、h、i、n、a、a、n、101(对应字符A) 、t和,其中有5个转义字符。字符常量A(A)与字符串常量A(“A”)的区别:定界符不同。字符常量使用单引号,而字符串常量使 用双引号。长度不同。字符常量的长度固定为1,而字符串常量的 长度可以是0,也可以是某个整数。存储要求不同。字符常量存储的是字符的ASCII码值, 而字符串常量除了要存储有效的字符外,还要存储一个 结束标志0。在C语言中,没有专门的字符串变量,字符串常量如 果需要存储在变量中,要用字符数组来解决。详细内容 将在后续章节中介绍。变量 在程序运行过程中,其值可以被改变的量称为变量。变量有两个要素: 变量名。每个变量都必须有一个名字,即变量名。变量命名应遵循标识符的命名规 则。 变量值。在程序运行过程中,变量值存储在内存中;不同类型的变量,占用的内存 单元(字节)数不同。在程序中,通过变量名来引用变量的值。 【程序2-3】用来输出两个整数相加、相减和相乘的结果,代码如下。 /* 文件名:chap02_3.cpp */ #include void main() int x,y; printf(“请输入两个整数,中间用空格隔开:“); scanf(“%d%d“, printf(“%d+%d=%dn“,x,y,x+y); printf(“%d-%d=%dn“,x,y,x-y); printf(“%d*10%d=%dn“,x,y,x*y); 程序运行结果: 请输入两个整数,中间用空格隔开:10 5 10+5=15 10-5=5 10*5=50 本程序中,x和y定义成整型变量,用于接受
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号