当前位置:文档之家› C语言程序设计第二章-常用数据类型

C语言程序设计第二章-常用数据类型

第二章常用数据类型【学习目标】本章将学习一些基本的程序概念,如程序结构、标识符、关键字和注释等。

本章的学习要点包括如下几点:(1)了解C语言的基本结构。

(2)分号、块和空白的使用。

(3)标识符的约束规则。

(4)C关键字。

(5)直接量的认识。

(6)注释的使用。

【学习导航】本章的在整个课程中的位置如图2-1所示。

图2-1 本章学习导航2.1 C语言基本程序结构任何一种程序设计语言都具有特定的语法规则和规定的表达方法。

一个程序只有严格按照语言规定的语法和表达方式编写,才能保证编写的程序在计算机中能正确地执行,同时也便于阅读和理解。

为了了解C语言的基本程序结构,请看【课堂案例2-1】。

【课堂案例2-1】在控制台输出“你好”。

【案例目标】会使用Xcode编辑器实现字符串输出【案例知识要点】C语言的程序结构、基本输出语句【案例程序代码】hello.c【案例代码说明】●第1行的作用是进行相关的预处理操作。

include成为文件包含命令,<>里的内容称为头文件。

头文件一般的扩展名为.h。

stdio 就是指“standard input & output"(标准输入输出),所以,源代码中如用到标准输入输出函数时,就要包含这个头文件。

●第2行是一个空行。

空行不会影响程序的功能。

空行起着分隔程序段落的作用,适当使用空行将使程序的布局更加清晰,提高程序的可读性。

空行不会浪费内存,所以不要舍不得用空行。

一般建议在头文件后插入一个空行。

●第3行声明了一个main函数,main是函数名。

关于函数的详细介绍在第七章。

main 函数具有特殊意义,它是程序执行的入口,也就是说,程序都是从main函数开始执行的。

●第4—6行定义了main函数的内容,称为函数体。

以“{”开始,以“}”结束。

●第5行调用了在stdio.h中的格式化输出函数printf,其作用是向终端(显示器、控制台)输出字符。

在这一行结束时,需要加上(;)。

在C语言中,一行代码由分号(;)终止。

图2-2是程序hello.c的执行结果:图2-2 Simple.c程序输出结果知识链接—编程规范在hello.c程序中,要注意以下的编程规范:【规则1-1】用#include <filename.h> 格式来引用标准库的头文件。

【规则1-2】包含头文件时一般不使用绝对路径名。

【规则1-3】在头文件和main函数之间使用空行隔开。

【规则1-4】函数体里面的内容(即{ }里面的内容),需要水平缩进四个空格。

如hello.c第5行所示。

试一试(一):创建triangle.c,输出一个三角形,运行效果如图2-3所示。

2.2 标识符标识符是指程序中函数、变量、参数的名称。

C语言要求标识符必须符合如下命名规则:●标识符的首字母必须是字母、下划线(_)●除首字母外,标识符的其他位置可以是数字(0-9)、大写字母(A-Z),小写字母(a-z),下划线(_)。

●标识符是大小写区别对待的,也就是说test、Test、TEST是三个不同的标识符。

●标识符未规定最大长度。

●关键字和保留字(参见2.3关键字)不能作为标识符。

表2-1将正确和错误的标识符进行了对比,并说明了错误的原因:标识符命名的编程规范如下:【规则1-5】标识符的命名需具有相关的含义,这样做的好处是以后进行回顾或他人阅读时,容易理解程序的含义。

比如要定义一个人的年龄,可以使用age这个标识符,而不要使用a。

2.3关键字C语言中的关键字是程序代码中的一些特殊字符。

每个关键字都有特殊的用途。

C语言一共有32个关键字。

表2-3列出了使用在C编程语言中的关键字。

2.4注释你如果想让你的程序很容易让人读懂,或者为了方便以后的维护,那么你可以通过为程序添加注释来做到这一点。

注释的作用是:用来解释程序代码的含义。

C语言的注释分为多行注释和单行注释两种:多行注释:/*注释内容*/单行注释://注释内容C语言注释通常用于3处:●版本、版权的声明●函数接口说明●重要代码行提示2.5变量和常量的基本概念2.5.1 变量1.变量的声明在学生管理系统中,系统中的一个最重要的角色是学生,对学生来说,应该有姓名,年龄等这些属性。

如何来表示这些属性呢?这就要用到变量。

变量是一块取了名字的、用来存储C 程序信息的内存区域;它是一些有意义的数据。

比如我们可以用变量名(也是一种标识符)name 来表示姓名,age 来表示年龄。

在C 语言中要使用变量必须要先定义(也叫做声明变量)。

定义变量是指设定变量的数据类型(参看2.5节)和变量的名称。

基本语法为:数据类型 变量名;上面的代码声明了一个变量age ,它的数据类型是int 类型。

变量名需遵守【规则1-6】。

【规则1-6】变量名首字母小写,其后每个英文单词的第一个字母大写,其它小写。

例如studentName 。

2.变量的赋值我们在程序中可以改变20这个值: age = 40 ;这时age 的值就变成了40(如图3-3所示),这也是为什么age被称为变量的原因,因为它的值是“可变的”。

ageage2.5.2常量常量是指在程序运行时其值不能改变的量。

常量可为任意数据类型(目前我们只使用过int 类型,其他的类型参加本章的2.6节),比如:100 是一个整型常量。

’a ’是一个字符型常量。

C 语言还支持另一种预定义数据类型的常量,这就是串。

所有串常量括在双撇号之间,例如"This is a test"。

切记,不要把字符和串相混淆,单个字符常量是由单撇号括起来的,如 ' a '。

整体上,C 语言的常量可分为3大类:● 数值型常量:又可以分为整型常量和实型常量 ● 字符常量 ● 符号常量图2-4 age 变量初始赋值后的内存图图2-5 age 变量修改值的内存图2.6 数据类型在定义变量时涉及到了数据类型,为什么会要用到数据类型呢?因为计算机里面保存一个数字或者一个字母,都是需要分配一定的空间,内存空间的最小单位是比特(bit),也可以称为“位”。

8个比特为一个字节(byte)。

现在常见的PC,用两个字节空间来保存一个字母,用四个字节保存一个整数。

为了保存不同的数字或者字母,我们在申请空间的时候就要告诉计算机,是要保存什么样的变量。

而计算机会根据这个类型,分配一定尺寸的内存给用户。

也就是说你声明的数据类型是计算机给后面的变量分配内存空间的依据。

C语言把数据类型分为基本类型、构造类型、指针类型和空类型。

如图2-6所示。

本节只介绍基本类型。

图2-6 数据类型图2.7 整型数据2.7.1 整型常量整型常量及通常理解的整数值。

在C语言中可以用3种进制来表示整型常量,分别如下:(1)十进制:基数为10。

最常用的一种。

当需要使用十进制表示整数时,无需任何前缀。

例如:(2)八进制:基数为8。

即满8进1。

当需要使用八进制表示整数时,需要在该数的前面加上前缀0。

例如:下面的语句会输出什么呢?输出结果为:8。

【说明】由于八进制表示数时容易引起混淆,如int v = 010表示的是8而不是我们第一感觉的10,所以尽可能少使用八进制来表示数。

(3)十六进制:由0~9、a、b、c、d、e、f 十六个符号构成。

其中a表示10,b表示11,以此类推。

当用十六进制表示整数,要在该数前面加上前缀0x。

例如:2.7.2 整型变量整型变量是用来存储整型数值的变量。

共有6种类型。

signed short int 有符号短整型简写为short或int, 字长为2字节共16位二进制数, 数的范围是-32768~32767。

取值计算原理是一共有216=65536个数,其中负整数有215=32768 个,正整数215-1=32767个,再加上一个0,一共65536个。

signed long int 有符号长整型简写为long, 字长为4字节共32位二进制数, 数的范围是-2147483648~2147483647。

unsigned short int 无符号短整型简写为unsigned int, 字长为2字节共16位二进制数, 数的范围是0~65535。

unsigned long int 无符号长整型简写为unsigned long, 字长为4字节共32位二进制数, 数的范围是0~4294967295。

使用有符号基本整型变量的例子:也可以在定义变量的同时给它赋值:如果一个整型变量赋值超过它的取值范围,就会发生溢出的问题。

请看【课堂案例2-2】【课堂案例2-2】测试数据溢出【案例学习目标】理解整型变量的取值范围【案例知识要点】数据取值范围、数据溢出【程序输出】如图2-7所示。

【程序说明】●第4行给无符号短整型变量x赋值32767,这是无符号短整型变量的最大值。

●第5行定义了无符号短整型变量y,并赋值x+1。

注意x已经是无符号短整型变量的最大值。

●第6行输出x的值为32767。

●第7行输出y的值为-32768。

214知识链接—数据溢出2.8 实型数据2.8.1 实型常量实型常量也称为浮点型常量。

实型常量的值包括整数部分、尾数部分和指数部分。

在不加说明的情况下,实型常量为正值。

如果表示负值,需要在常量前使用负号。

C语言浮点类型常量有两种表示方式:(1)十进制数形式:如1.23。

要注意必须含有小数点,否则会被当作int型常量处理。

(2)科学计数法形式:如3.14E2。

只有浮点类型才采用科学计数法表示。

字母E或e 之前必须有数字,且E或e后面指数必须为整数,如e3、2.1e3.5、.e3等都是不合法的指数形式。

浮点类型有两种:float和double。

double类型正如它的名字所揭示的(double是双倍的意思),它表示精度是float的两倍,因此也将double成为双精度类型。

表示float类型的数据要在数字后面加上f(或F),默认的浮点类型为double型。

2.8.2 实型变量实型变量分为单精度(float型)和双精度(double型)。

对每一个实型变量都应再使用前加以定义。

如:float x,y; / *指定x , y为单精度实数* /double z; / *指定z为双精度实数* /在一般系统中,一个 float型数据在内存中占4个字节(3 2位)一个double型数据占8个字节(6 4位)。

单精度实数提供7位有效数字,双精度提供1 5 ~ 1 6位有效数字,数值的范围随机器系统而异。

值得注意的是,实型常量是double型,当把一个实型常量赋给一个float型变量时,系统会截取相应的有效位数。

例如float a;a = 111111.111 ;由于float型变量只能接收7位有效数字,因此最后两位小数不起作用。

如果将 a改为double型,则能全部接收上述9位数字并存储在变量a中。

相关主题