《C数据类型概述 基本数据类型 运算符和表达式 混合运算与类...》由会员分享,可在线阅读,更多相关《C数据类型概述 基本数据类型 运算符和表达式 混合运算与类...(112页珍藏版)》请在金锄头文库上搜索。
1、C数据类型概述基本数据类型运算符和表达式混合运算与类型转换数据的输入输出顺序程序设计举例,第二章 基本数据类型及运算,2.1 数据类型概述,冯诺依曼计算机 指令和数据都存储在计算机内存中 都以二进制(Binary)形式存储在内存中,问题1 数据在计算机中是如何存储的?,二进制在电器元件中易实现 双稳态元件很多 电压的高与低 电容器的充电与放电 脉冲的有与无 晶体管的导通与截止 二进制运算较十进制简单 易于在物理上实现存储 与逻辑真假一一对应 用1表示真,0表示假,问题2 为什么用二进制存储?,十进制数 用0-9这10个数码表示十进制数的一个数位 逢10进1、借1当10 可表示为10的多项式之和
2、 如123.456即 1102+2101+3100+410-1+510-2+610-3,问题3 何为二进制?,二进制数 用0-1这2个数码表示十进制数的一个数位 逢2进1、借1当2 可表示为2的多项式之和 如(101.101)2即 122+021+120+12-1+02-2+12-3,使用二进制数的最高位(最左位)表示正负,称为符号位 0表示正数,1表示负数 (123)10即 0000000001111011 (-123)10即 1000000001111011 加减法表示不方便 如何区别0? +0 0000000000000000 -0 1000000000000000 以补码形式存储负数
3、便于用统一的形式表示0 便于实现加减法运算,问题4 如何表示二进制的正负?,补码 正数和零的原码、反码、补码均相同 负数:原码 - 反码(原码按位取反) - 补码(=反码+1) 例如: (-123)10 原码: 0000000001111011 反码: 1111111110000100 补码: 1111111110000101 例如: (-1)10 原码: 0000000000000001 反码: 1111111111111110 补码: 1111111111111111,问题4 如何表示二进制的正负?,二进制的压缩表示:八进制、十六进制 二进制和八进制如何相互转换? 3位一组,直接转换,问题
4、5 数据在程序中是如何表示的?,(1111111110000101)2 分组:1,111,111,110,000,101 转换:(177605)8,(1234567)8 转换:001,010,011,100,101,110,111 转换:(1010011100101110111)2,二进制和十六进制如何相互转换? 4位一组,直接转换,用A-F表示10-15,问题5 数据在程序中是如何表示的?,(1111111110000101)2 分组:1111,1111,1000,0101 转换:(FF85)16,(3A4E)16 转换:0011,1010,0100,1110 转换:(11101001001
5、110)2,常量,常量就是在程序使用之前预先设定并在整个运行过程中没有变化的量。,C语言有两种实现常量的方法: 直接常量和符号常量,变量,在程序中需要先定义变量,再使用变量。,变量是在程序执行过程中其值可以改变的量。,定义变量包含两个步骤: 指出变量的数据类型。例如: int studentID; /int是变量的数据类型 为每个变量取一个名称(变量名)。例如: int studentID; /studentID是变量名,语言允许把数据存放在变量中,每一个变量都由一个变量名来标识。变量名的命名规则要满足标识符的规定。,每个变量都必须具有一个类型。,每个变量根据它的类型,在内存中占据一 定数目的
6、字节单元,该变量的值就存放在 这些内存单元中。,变量,123,prod,变量的本质就是命名的内存单元,标识符,标识符即用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。,标识符的命名规定,只能由大小写字母、下划线和数字组成;开头的第一个字符只能是大小写字母或下划线;大小写是敏感的;不能与的关键字重复;名字在整个程序中必须是唯一的;名字的长度不能超过系统的规定。,非法标识符的例子,非法的标识符: 3rd_entry (数字开头) all$done (包含非法字符$) the end (包含空格) int (系统关键字),2.2 基本数据类型,数据类型的概念,数据类型:数据
7、存在的组织和形式。 程序中用到的所有数据都必须指定其数据 类型。,的数据类型,的数据类型,基本类型,构造类型,整型,单精度型,双精度型,数组类型,结构体类型,浮点型,联合类型,指针类型,字符型,枚举类型,空类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,2.2.1 整型数据的常量与变量,1. 整型数据类型,2.整型常量,1) 十进制整型常量: 由数字09和正负号表示 如: 123, -456, 0,整型常量即整常数。 中有下面三种形式的整型常量:,注意:八进制整型常量中不应出现“7”以上的数码。 如: 0128, 0209,2. 整型常量,2)八进制整
8、型常量: 由数字0开头,后跟数字07表示. 如: 0123, 即(0123)8 =(83)10,2. 整型常量,3) 十六进制整型常量:以 “0x或0X”开头后跟09,af或AF表示 如: 0xFF, 即(0xFF)16 =(255)10,2. 整型常量-整型数据的存放,例如:unsigned short a=-10; 内存中实际存放的是 -10 的补码,例如:short a=10; 内存中实际存放的是 +10 的补码,输出a的值为:65526,3. 整型变量,定义整型变量 int i; / 定义变量i,系统为变量i分配4个字节的内存 int i, j, k; /定义i,j,k三个整型变量,变
9、量定义的一般格式是: 类型 变量名; /* 注释 */,注:语言中的所有关键字都是小写的。,#include using namespace std; int main() int a , b , sum ;a = 123; b = 456; sum = a + b;cout“sum=“simendl;return 0; ,3. 整型变量-变量先定义后使用的好处,此处定义的变量名是 sum,sim在这之前从未定义过,所以编译不能通过,且会出现错误信息。,Error:Undefined symbol sim,4. 整型变量的初始化,C语言允许在定义变量的同时赋值,这称为变量初始化。,int i
10、= 0; int number = 12345;,也可以给部分变量赋初值,int i, j, k = 0;,不能用连续赋值方式给多个变量赋同一初值如:int TotalScore = AverScore = 0;,正确的应该是: int TotalScore=0, AverScore=0;,4. 整型变量的初始化,2.2.2 浮点型数据的常量与变量,1. 浮点型数据类型,1. 浮点型数据类型,十进制小数形式:由数字和小数点组成。 (小数点必须有) 如: 10.23, -0.456, .12, 0.0, 89.,实数又叫“浮点数”。 C语言中,实数常量有两种表示形式:,2. 浮点型常量,指数形式
11、:s E n 或 s e n 形式。 注意: E或e前面必须有数字,后面的指数 必须为整数。 如: 218.3 = 218.3E0 = 2183E-1= 0.02183E+4,e-5 , 1.2E-3.5,2. 浮点型常量,默认为double型。 在常量后加字母f或,指定数据是float型常量。如 0.1234f,2. 浮点型常量-为浮点型常量指定类型,3. 浮点型变量,定义浮点型变量 float a=1.0f; / 定义变量a,系统为它分配4个字节的内存,并为a赋初值1.0 double number=0.0; / 定义变量number,系统为它分配8个字节的内存,并赋初值为0.0,2.2.
12、3 字符型数据的常量与变量,1. 字符型数据类型,1. 字符型数据类型-在内存中的存储方式,字符型数据在内存中占一个字节,该字节中保存的是其ASCII代码。,常用字符的ASCII 代码表,汉字编码,兼容ASCII码,使用连续的2字节存储一个汉字,每个字节的最高位为1 GB2312 6763字 定长2字节 GBK 21003字 定长2字节 GB18030-2000 27533字(强制) 变长4字节 GB18030-2005 70244字(推荐) 变长4字节 BIG5 13053字 定长2字节,汉字存储,Unicode ISO制定 2字节编码,共编码65536个字符 可编码所有语言的所有字符 UT
13、F-8 用于传输Unicode字符 用1-6字节编码Unicode字符 变长字符编码 用于在网页上显示国际字符 Java使用其变种UTF-16,其他字符编码,比如:a , A , d , D ,? , % ,$ , 2 , 4,注意: a 和 A , d 和 D 都是不 同的字符常量。,语言中,字符常量是用单引号 括起来的一个字符,这些字符都是ASCII码集中的字符。,2. 字符型常量,2. 字符型常量-转义字符常量,另外:语言还存在转义字符常量。,它以 字符开头,后面跟一个字符或代码值,并用单引号括起来。,比如: n , t , r , ,2. 字符型常量-转义字符常量及其含义,例5:(程序
14、) A-101-x41-65,如 101 - A 012 -n376 - x61 -a60 -0 483 - (),2. 字符型常量-转义字符常量及其含义,2. 字符型常量-字符型数据在内存中的存储方式,65,这个字节存储的内容是01000001。 如果它以整型的格式输出,则输出65; 如果它以字符型格式输出,则输出A。,ASCII 值65,3. 字符型变量,定义型变量 char a; / 定义变量a,系统为它分配1个字节的内存 a=a; / 把a常量赋值到a变量中,3. 字符型变量-整型数据和字符型数据通用,字符型数据存储对应的 ASCII 码,和整型数据在一定范围内可以通用,即可以相互赋值
15、,相互输出,也可以在一起进行运算。,“一定范围内” 指的是“一个字节”所能保存的整数范围内。,char linefeed = 65; char linefeed = A;,2.2.4 字符串常量,2.2.4 字符串常量,比如:a” , ”A” , ”hello” , ”OK” , ”SiChuanDaXue”,语言中,字符串常量是用双引号“ 括起来的若干个字符。,字符串常量在内存中占用连续的字节单元,每个字符按顺序占一个字节。 系统自动在字符串常量的结尾加一个字符串结束标志字符, 表示字符串结束。,2.2.4 字符串常量-字符串结束标志字符, 0 是ASCII码为0的字符。它是一个“空操作字符”,它既不引起任何控制动作,也不产生任何显示。,语言中,字符串结束标志字符是 0 。, 因此,字符串常量在内存中占用的字节数等于可见字符数加上1。,2.2.4 字符串常量-字符串结束标志字符,” HELLO ”,字符串结束标志字符也是一个字符,也要占用一个字节。,