c语言的数据类型、运算符和表达式

  • 格式:doc
  • 大小:126.50 KB
  • 文档页数:12

少年易学老难成,一寸光阴不可轻 - 百度文库

1 数据类型、运算符和表达式

一、C语言的基本数据类型

数据是程序处理的对象。C中将数据分为不同的数据类型,任何数据都属于某一种特定的数据类型。数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。

C的数据类型分为基本数据类型和构造类型。基本数据类型是系统定义的,用户可以直接使用。构造类型由用户自行定义。C的数据类型如图所示。

C标准没有规定各类数据所占用内存位数。所以不同c编译系统的各类数据所占用内存位数是不一样的。上机使用时,应注意使用的c编译系统的具体规定。Turbo C基本数据类型、字宽和范围见表。 类型 所占位数 数的范围 [signed] char 8 -128~127

unsigned char 8 0~255

[signed]int 16 -32768~32767

short [int] 16 -32768~32767

long [int] 32 -2147483648~2147483647

unsigned [int] 16 0~65535

unsigned short [int] 16 0~65535

unsigned long [int] 32 0~4294967295 C++数据类型 基本类型

字符型(char)

空类型(void) 整型 短整型(short int)

无符号整型(unsigned int) 长整型(long int) 基本整型(int)

实型(浮点型) 双精度型(double) 单精度型(float)

指针

构造类型

枚举(enum) 联合(union) 结构体(struct) 数组 少年易学老难成,一寸光阴不可轻 - 百度文库

2 float 32 约6位有效数字

double 64 约12位有效数字

在Visual C++中:

char:1 Byte

int:4 Byte

short:2 Byte

long:4 Byte

float:4 Byte

double:8 Byte

二、常量

常量:整型常量、实型常量、字符常量、字符串常量、符号常量

1.整型常量

C语言程序中可以使用十进制、八进制和十六进制来表示整型常量。

十进制整型常量,由正、负号和0~9十个数字组成,没有小数部分。

八进制:以数字0开头,后面跟0~7的数字序列,前面可以有正负号。

十六进制:以“0x”或“0X”开头,后跟0~9、a~f(大小写均可)的数字序列。

类型确定:

常量值后跟L或l表示长整数。

后跟U或u表示无符号整数。

后跟LU或lu表示无符号长整数。

2.实型常量

实型常量就是我们日常使用的带小数的常数,也叫浮点数。在C语言中,只有十进制表示。它有两种表示形式:小数表示法和指数表示法。

(1)小数表示法:它由整数和小数两部分组成。这两部分可以省略其中的一个部分,但不能同时都省略(小数点不能省略)。如:12.35、35.、.689都是double(双精度浮点)型常量。

(2)指数表示法(科学表示法):方法是在小数表示法后面加字母E(或e)表示指数,指数部分可正可负,但必须是整数。如:1e-2、0.5E10、35.56E-3、7.e-2,它们都是double(双精度浮点)型常量。注意:用指数形式表示的浮点数必须有尾数,可以是整数或小数。如:e4和.e3这样的写法都是错误的。

实型常量缺省是double类型。单精度实型常量由数值后跟F或f来表示。

3.字符常量

由单引号括起来的一个字符。字符常量两侧的单引号是必不可少的。

转义字符:以反斜线“\”开头,后跟一个字符或用八进制、十六进制表示的ASCII码值组成。使用时同样要括在一对单引号内。

转义字符表

字符形式 转义功能

\n 回车换行(Enter) 少年易学老难成,一寸光阴不可轻 - 百度文库

3 \t 水平制表符(即跳到下一个输出区)

\v 竖向跳格

\b 退格(Backspace)

\r 回车

\a 响铃

\\ 反斜线字符(\)

\’ 单引号字符(’)

\” 双引号(”)

\000 1~3位八进制数所代表的字符

\xbb 1~2位十六进制数所代表的字符

4.字符串常量

由一对双引号括起来的一个或多个字符序列。

字符串常量与字符常量的区别:一个字符常量在内存中存放,只占1 Byte,而字符串常量是用一个一维字符数组来存放的,即在内存中用多个连续的字节存放,每个字节放一个西文字符,或用2Byte放一个汉字,为了标志字符串的结束,系统自动在字符串的结尾加一个结束符(’\0’),这里的’\0’表示空字符的转义字符。

注意:字符串长度与字符串在内存中占用的字节数是两个不同的概念。

5.符号常量

用一个标识符号代表的一个常量,这时,此标识符号与此常量是等价的。C语言中符号常量是用宏定义命令定义的。定义符号常量的格式如下:

#define 标识符 常量

编译程序在源程序中发现该标识符时,都用后面的常量来替换。

三、变量

变量:在程序执行中其值可发生变化的量称为变量。

1.标识符

标识符是由程序员定义的单词,用它来命名程序中的一些实体对象(如符号常量名、变量名、函数名、类型名、数组名等)。

C语言中标识符的命名规则:

(1)C语言规定标识符是由大小写英文字母、数字字符(0~9)和下划线(_)三种字符组成,且第一个字符必须为英文字母或下划线(以英文字母或下划线开头)。

(2)标识符区分大小写(大小写字母不一样)。

(3)长度任意(最少一个字符)。

(4)不能采用系统关键字(保留字)。

(5)标识符命名应以直观且易于拼读,即做到“见名知意”。

2.关键字

关键字是系统已定义的单词,它们在程序中有着不同的用途。不能用它们再作其他之用。下面列出常用的32个关键字,它们都是系统已定义的保留字,用户不能再用它们少年易学老难成,一寸光阴不可轻 - 百度文库

4 定义如符号常量名、变量名、函数名、类型名、数组名等。

auto break case char continue const

default do double else enum extern

float for goto if int long

register return short signed sizeof static

struct switch typedef union unsigned viod

volatile while

注意:这些关键字用的都是小写字母。

3.变量的定义

在C语言中,变量必须遵循“先定义、后使用”的原则,即每个变量在使用之前都要用变量定义语句将其声明为某种具体的数据类型。

变量定义语句的格式:

数据类型 变量名1 [,变量名2,……];

其中:“数据类型”包括基本数据类型和构造数据类型两类。当一条变量定义语句定义多个变量时,变量名之间用逗号分割。

4.变量值

变量存在2个有用的值。一个是变量所表示的数据值,另一个是变量的地址值。

变量赋初值:在定义变量的同时给变量赋一个初始值。该变量被称为已初始化的变量。其方法是在变量名的后面跟一个等号和一个常量值。

变量赋值:C语言中对变量的赋值可以采用下面的方法:

变量名=表达式;

四、数组

数组是一种构造类型,它是数目固定、类型相同的若干个变量的有序集合。一个数组包含了若干个变量,每个变量称为一个元素,每个元素的类型都是相同的。

1.数组的定义

定义数组的格式如下:

数据类型 数组名[下标1][下标2]…;

其中:“数据类型”用于说明数组中每个元素的类型;数据名用于标识该数组;下标的个数表明数组的维数。1个下标表示一维数组,2个下标表示二维数组,以此类推。

定义数组时,“下标”必须是一个整型常量或整型常量表达式,不允许使用变量作为下标定义数组。C语言规定不能定义动态数组,即不能定义数组元素个数不定的数组。

C语言中数组元素在内存中是按行存放的,即元素是一行一行连续存放的,存完第一行后存第二行,然后存第三行,……,以此类推。

2、数组元素的表示

C语言中,数组除了作为函数的参数外,不能整体引用,每次只能引用数组的一个元素。

数组元素与普通的变量一样,可出现在任何合法的C语言表达式中。

数组元素的表示格式如下: 少年易学老难成,一寸光阴不可轻 - 百度文库

5 数组名[下标1][下标2]……

这里的下标与数组定义时不同,它可以是整型常量,也可以是含有已复制变量的整型表达式。下标的含义也不同,引用数组元素时给出的下标值代表元素在数组中的排列序号。

C语言中的数组下标从0开始。C语言在编译和运行过程中不自动检测数组下标值是否越界。

3.数组的初始化

所谓数组的初始化就是在定义数组的同时,给数组元素赋初始值。其方法是等号“=”后用一个初始化列表来实现。初始化列表是一个用一对花括号({})括起来的若干个数据项组成的,多个数据项之间用逗号分隔。数组赋初值时,数组元素的个数要大于等于初始化列表中数据项的个数,否则编译时将出错。

初始化列表中提供的初值的个数不能多于数组元素的个数,但可少于数组元素的个数。当初始化列表中提供的初值个数少于数组元素的个数时,系统自动将后面的元素赋初值0。

当数组元素的初值全部列于初始化列表中时,可以省略对数组第一维长度的说明。

4.数组元素的赋值

5.字符数组

字符数组是指数组元素是char型的一种数组,字符数组也可以有一维、二维、三维和多维数组。一维数组可以用来存放一个字符串,多维字符数组可以用来存放多个字符串。

C语言中只提供了字符数据类型,没有提供字符串数据类型,因而,字符串的存取完全依赖于字符型一维数组,即字符串是借助于字符型一维数组来存取的。在存储字符串时,字符串结束标志“\0”也占用一个字节的存储空间,但它不计入字符串的实际长度。

一个一维字符型数组并不一定是一个字符串,只有当一维字符型数组的最后一个元数为“\0”时,它才构成字符串。例如:

char str1[]={‘C’,’h’,’i’,’n’,’a’};

char str2[]={‘C’,’h’,’i’,’n’,’a’,’\0’};

str1仅仅是一个长度为5的字符数组,不能把它作为一个字符串来使用。

当将一个一维字符数组作为一个字符串使用时,可以用字符串直接初始化该数组。如:

char str[6]={“China”};

也可以省略花括号,直接写成:

char str[6]=”China”;

这时,数组定义的长度应大于等于字符串中包括“\0”在内的字符个数,即应大于等于字符串的长度加1。

在定义数组时,若省略长度说明,则编译程序将自动按字符串的个数对数组大小进行初始化。例如:

char str[]=”China”;