C语言基础第二讲

312 阅读7分钟

第二章 C语言的数据类型****

C语言有多种数据类型,有表示整数的整型,表示小数的实型(也被称为浮点型),表示字符的字符型等等,在下面的讲解中将会逐步呈现。

C语言中数据有几种表现形式呢?

在高级语言中,数据有两种表现形式:常量和变量。

一.常量

1.什么是常量呢?

在程序运行的过程中,其值不能被改变的量被我们称为常量。

2.常量分几类呢?

通常情况下,常量被我们分为整形常量,实型常量,字符常量,字符串常量和符号常量。

3. 整型常量

如100,678,11,25422等都是整型常量。

4.实型常量

实型常量有两种表示形式:十进制小数形式和指数形式。

十进制小数形式:由数字和小数点组成,如0.314,123.456,-14.76等。

指数形式:如12.34e3代表12.34乘以10的3次方,-12.1e3代表-12.1乘以10 的3次方,-12.1E3代表-12.1乘以10的3次方。因为在计算机输入或输出时无法表 示上角或下角,所以以字母e或E代表以10为底的指数。(注意:在e或E的前面一 定要有数字,且后面的数字一定要为整数)。

4. 字符常量

有两种形式的字符常量:普通字符和转义字符。

普通字符:用单引号引起来的一个字符。如‘a’,‘A’,‘#’,‘ ’等,注意单引号中只能有一个字符,字符是区分大小写的,因为在计算机的储存单元储存字符时,是以ASCII码形式储存的,以下是ASCII表:

image.png 转义字符:以字符‘\’开头的字符序列。例如:‘\n’表示换行,‘\t’表示输出的位 置上跳到下一个Tab位置等。这些都是转义字符,在C语言中定义了许多转义字符, 转义字符的设立有助于我们更加细致的的操作。

5. 字符串常量

什么是字符串常量?

用双引号把若干个字符引起来,如“123”,“12as”,“wfe”等,注意字符串和字符的 使用,字符串是双引号,字符是单引号。

6. 符号常量

什么是符号常量呢?

用一个符号名代表一个常量的,被我们称为符号常量。如#define PI 3.1415,该操作用 宏定义的方式,使程序在编译的过程中,将代码中的全部PI由3.1415进行代替。

使用符号常量有什么好处呢?

①含义清晰。看程序时看到PI就知道是3.1415,当我们使用符号常量时,应考虑到 “见名知义”使我们再看到它时,十分容易明白它所代表的含义。

②当我们要改变程序同一个常量时,可以做到“一改全改”。

 

二.变量

变量,顾名思义就是可以改变的量,在程序中变量必须先定义后使用。在变量中,由于 变量的多种多样,我们设计了数据类型来区分不同的变量。

数据类型的分类

数据类型分为基本类型,枚举类型,空类型,派生类型

基本类型分为整型类型和浮点类型,整数类型分为基本整型(int)、短整型(short int)、 长整型(long int)、双长整型(long long int)、字符型(char)、布尔型(bool)。 浮 点 类型分为单精度浮点型(float)、双精度浮点型(double)。

派生类型分为指针类型(*)、数组类型([])、结构体类型(struct)、共用体类型(union)、 函数类型。

1. 整型数据

①基本整型(int):如果系统给基本整型分配2个字节,那么它在储存单元中能存放的最大值为011111111111111,第一位的0代表正负数,而后面的15个1是以二进制的形式所能代表的最大值,为2的15次方减1(即十进制数32767),最小值为1000000000000000,最前面的1代表这个数是负数,而后面的15个0是以二进制形式所能代表的最小值,最小值为负2的15次方(即十进制数-32768)。(与整型在内存中的储存形式相关的原码,反码和补码,请参考《计算机导论》)。

②短整型(short int):类型名为short int或short。假如操作系统给int型分配4个字节,那么短整型分配的字节数为2,储存方式和int型相同。一个短整型变量的值的范围是-32768~32767。

③长整型(long int):类型名为long int或long。在大多数的编译软件中,对于一个long型数据分配4个字节,因此long int型变量的值的范围是负2的31次方到2的31次方减1,即-2147483648~2147483647。

④双长整型(long long int):类型名为long long int或long long,一般分配8个字节。(这是C99新增的类型)

拓展:在日常生活中,我们常常使用不到负数,比如学号,年龄,银行存款等,所以为了充分利用变量的值的范围,可以将变量的定义为“无符号”类型。无符号类型就是在类型说明符的前面加上unsigned,有符号型就是在类型说明符的前面加signed。当我们定义一个数据类型时,系统会自动将这个数据类型定义为有符号型数据类型,假如定义一个int型变量,那么系统会在识别时加上signed,即signed int。当我们定义一个数据类型为无符号类型时,那么该数据将会没有负数部分,并将非负数部分扩大为原来的2倍。

注意:只有整型数据(或字符型数据)可以加signed或unsigned修饰符,实型数据不能加,且对于无符号整型数据用“%u”格式输出。

2. 字符型数据

简介:字符与字符代码并不是任意一个字符都可以被计算机识别的,例如圆周率π,机

计算机是无法识别的,因此只能使用系统的字符,所以目前大多数系统使用的是ASCII

字符集,包括127个字符,详见ASCII码表(如下)

image.png

①字符变量

什么是字符变量?

字符变量是用类型符char定义字符变量。

字符变量的格式:

char a=’?’;

解释:定义a为字符型数据并定义初始值为‘?’。‘?’的ASCII代码是63,系统把 整数63赋给变量a。由于a是字符变量,但实际上是一个字节的整型变量,由于常常 用来存放字符,所以称为字符变量。所以当我们想输出该字符时,可以用 printf(“%c”,a),当我们想输出该字符的ASCII值时,可以用printf(“%d”,a)。

3. 浮点型数据

什么是浮点型数据?

浮点型数据是用来表现具有小数点的实数的。

浮点数的分类:float(单精度浮点型),double(双精度浮点型),long double(长 双精度浮点型)。

①单精度浮点型(float)。

  编译系统会为每一个float型变量分配4个字节,数值会以规范的二进制数指数形式储 存在存储单元中。(具体存储过程请参考《计算机导论》)。

②双精度浮点型(double)

该类型扩大了所能表示的数值范围,用8个字节存储一个double型数据。

  ③长双精度浮点型(long double)

不同的编译系统对长双精度浮点数的处理方式不同,比如分配的字节数不同,因此双精 度浮点数在不同的编译系统中所能表示的数值范围大小也不相同。