当前课程知识点:C语言程序设计 >  第3章 基本数据类型、运算符与表达式 >  3.3 什么是变量 >  什么是变量

返回《C语言程序设计》慕课在线视频课程列表

什么是变量在线视频

下一节:如何进行算术运算

返回《C语言程序设计》慕课在线视频列表

什么是变量课程教案、知识点、字幕

同学们大家好

上节课我们介绍了标识符以及常量

这节课我们开始讲解什么是变量以及数据类型的表示范围

变量就是在程序运行期间

其值可以改变的量

变量具备两要素

变量名和变量值

变量名是合法的标识符

用于标识内存中一个具体的存储单元

在这个存储单元中

存放我们需要的数据也就是变量值

从变量中取值

实际上是通过变量名找到相应的内存地址

从该存储单元中读取数据

要清楚变量名和变量值是两个不同的概念

如下图所示

2000为内存空间的地址

a为变量名

数字1代表存储空间中的内容

也就是变量值

在C语言中变量要遵循

先定义

后使用的原则

在定义变量时要指定该变量的名字和数据类型

在变量定义语句中变量类型决定了编译器

为其分配的内存单元的字节数

内存中能存放什么类型的数据

数据在内存中的存储形式

当同时定义多个相同类型的变量时

变量之间要用逗号分隔

声明的顺序无关

最后以分号结束

通常情况下如果只定义变量

未初始化的变量的值是随机的

如下程序段

定义整形变量a b c

字符变量ch

浮点型变量data

双精度浮点型变量f

并对部分变量赋初值

变量b由于未付初值其值不确定

对于在定义变量时没有初始化的变量如b

可以在程序执行过程中通过赋值的方式来改变变量的值

如b=a

将变量a中的内容赋值给变量b

这时b与a均为2

C语言要求变量定义一般放在函数开头第一条可执行语句之前

来看下面这个例子

我们给出对应的内存存储表示图

编译程序根据变量定义为其分配指定字节的内存单元

VC环境中int变量占四字节

浮点型变量占内存4字节

初始时变量a和data的值不确定

第45语句行是在程序执行过程中给变量赋值a为1

data经过运算为3.6如图

通过上面的例子

我们了解数据在内存中的存储形式

那么不同的数据类型变量是如何在内存中存储的

以及合法的取值范围是多少

下面我们来分别介绍数据类型及表示范围

基本数据类型最主要的特点是

其值不可以再分解为其它类型

C语言直接提供的任何类型都有其取值范围

不同类型取值范围不同

不同类型占用的内存字节数不同

为了精准的获取变量在内存空间所占的字节数

可用sizeof()获得某种数据类型在内存中所占字节数

下面的程序可以显示每种基本数据类型所占的字节数

在VC环境下经过编译运行得到的结果如下

字符型数据在内存所占为1字节

整型占4字节

单精度浮点型为四字节

双精度浮点型为八字节

下面我们分别来学习

简单数据类型所表示的变量

以及变量在内存中的表示范围

1

整型数据

根据表达范围可以将整型分为

基本整型(int型)

针对不同的编译系统在内存中占2个或4个字节

短整型(short int)

VC++6.0中占2个字节 长整型(long int)

VC++6.0中占4个字节

整型变量值的范围包括负数到正数

有符号整型数的存储单元的最高位是符号位

其余为数值位

int a = -2;

我们以两字节为例给出a在内存中的表示形式

无符号整型数的存储单元的全部二进制位

用于存放数值本身而不涉及正负

故无符号整型可以扩大表示范围

可用于只需要用正整数的情况下

unsigned int a = 2; 或 unsigned a = 2; 我们同样以两字节为例给出在内存中的表现形式

这时我们发现两者在内存中的表现方式是相同的

不同的是有符号数的最高位是符号位

无符号数的最高位是数值位

这样一来

前面的三种整型变量就演变成了6种整型变量即

有符号整型

无符号整型

符号短整型

无符号短整型

有符号长整型

无符号长整型

下面的示例说明了在C程序中是如何定义整型变量的

在程序的第二行定义了符号常量

在第四行定义了两个整型量a b

在第五行定义无符号整型量C

并赋初值0Xffff

第六行定义短整型量e

在第七行定义长整型量D

程序的第10行将无符号数赋值给的有符号的短整型量

在输出时

按照有符号数据输出

由于最高位为1故输出负数

计算机中的实数是按指数形式存放的

一般情况下以符号位

—阶码—尾数的形式存储在内存中

在单精度浮点数32位的划分是

最高位1位符号位

30到23位8位用于存放阶码

从22到0这23位存放尾数

在双精度浮点数64位的划分是

最高位1位符号位

62到52位11位用于存放阶码

从51到0这52位存放尾数

实型变量的定义格式和整型变量一样

分为三类

单精度浮点型变量在内存中占4个字节的存储单元

双精度浮点型变量

在内存中占8个字节的存储单元

长双精度浮点型变量

在TC或BC环境下

在内存中占10个字节的存储单元

在VC下则占8个字节

注意

在三种实型类型中

其精度是排列是 float double long double

对于上面三种浮点类型的数据所表示的精度是不同的

float 7 ~ 8

double 16 ~ 17

long double 17 ~ 18

编译运行下面的程序

分析结果我们发现

变量a的最后一位数值发生了变化

其原因是float型变量最多只能精确表示8个数字

因此显示a的值时

只能有效显示前面8个数字即

123.45678

最后追加一位数字7是随机的

前面处理的是数值数据

现在我们来描述

字符型量

字符型变量一次只能放一个字符

该字符在内存中占1个字节8位

将一个字符常量

放到一个字符变量中去

实际上

并不是把该字符本身放到内存单元中去

而是将该字符的ascii码值放到存储单元中去

在大多数系统采用ASCII字符集

涵盖的字符有

大小写字母

数字

专用符号

空格符

不能显示的字符空(null)字符(以‘\0’表示)

警告(以‘\a’表示)

退格(以‘\b’表示)

回车(以‘\r’表示)等

在内存中一个整形数据

是以二进制形式存储的

一个字符在内存中也是以其对应的ASCII的二进制形式存储

字符型数据占一个字节

整型数据在VC编译中占四个字节

因此

在C语言中

只要不超出ascii码的取值范围

字符型数据和整型数据之间是可以相互转换

在C程序设计中没有字符串变量

字符串需用字符数组来存放

在后面的课程中进行讲解

前面我们介绍了C语言的基本数据类型

这是C程序设计对数据处理的基础

是必须熟练掌握的基本知识

C语言中不同的数据类型的变量在内存中所占存储单元不同

也即是说在C语言中不同的数据类型都有一定的数据表示范围

下面的表给出了C语言基本数据类型的表示范围

在C语言中数据类型所占的存储空间是有限的

在程序中处理数据时必须考虑到该数据类型所能处理的范围

否则编写的程序在运行过程中会出现意想不到的结果

同学们

这节课就讲到这里

我们下节课见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

什么是变量笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。