
C语言31100316.ppt
39页第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式数据结构+算法+程序设计方法+语言工具完整的程序设计完整的程序设计对象对象灵魂灵魂工具工具•数据是程序命令操作的对象•数据的类型是指根据表达形式的不同而划分的类别•根据这些数据类型可以构造出不同的数据结构3.1 C3.1 C语言的数据类型语言的数据类型数据类型数据类型构造类型构造类型指针类型指针类型空类型(无值类型)空类型(无值类型) voidvoid数组类型数组类型结构体类型结构体类型 structstruct联合类型联合类型 unionunion基本类型基本类型整型整型 intint字符型字符型 charchar实型(浮点型)实型(浮点型)单精度实型单精度实型 floatfloat双精度实型双精度实型 doubledouble用户定义用户定义数据类型数据类型非基本类型非基本类型枚举类型枚举类型枚举类型枚举类型 enum 3.2 3.2 常量与变量常量与变量3.2.1 3.2.1 常量和符号常量常量和符号常量•在程序运行过程中在程序运行过程中, ,其值不能被改变的量称其值不能被改变的量称为常量为常量•常量区分为不同的类型:常量区分为不同的类型:整型整型 100100,,125125,,-100-100,,0 0实型实型 3.14 3.14 ,, 0.1250.125,,-3.789-3.789字符型字符型 ‘a a’, , ‘b b’,,‘2 2’字符串字符串 ‘a a’, , ‘a ab b’,,‘12321232’例例3.1 3.1 符号常量的使用符号常量的使用#define #define PRICE 30PRICE 30#include <#include
符号常量的值在其作用域内不能改变,也不能再被赋值 运行结果:运行结果: total=300total=300说明:说明:说明:说明: 程序中用#define命令行定义PRICE代表常量30,可以和常量一样进行运算优点:优点: 含义清楚、一改全改说明:说明:说明:说明:如再用赋值语句给PRICE赋值是错的 PRICE=40;/* 错误,不能给符号常量赋值*/3.2 3.2 常量与变量常量与变量3.2.23.2.2 变量 变量•变量代表内存中具有特定属性的一个存储单元变量代表内存中具有特定属性的一个存储单元 它用来存放数据,这就是变量的值它用来存放数据,这就是变量的值 在程序运行期间,值可以改变在程序运行期间,值可以改变•变量名实际上是一个以一个名字对应代表一个地址变量名实际上是一个以一个名字对应代表一个地址 在对程序编译连接时由编译系统给每一个变量名分在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址配对应的内存地址 从变量中取值,实际上是通过变量名找到相应的内从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据存地址,从该存储单元中读取数据。
标识符标识符3.2 3.2 常量与变量常量与变量 变量变量命命名名的规定:的规定:C语言规定标识符只能由C语言规定标识符只能由字母、字母、数字数字和和下划线下划线三种字符组成,且第一个字符必须三种字符组成,且第一个字符必须为字母或下划线为字母或下划线 例:例:sumsum,,_total, month, Student_name_total, month, Student_name,, lotus_1_2_lotus_1_2_3,3,BASIC, li_ling BASIC, li_ling M.D.John, M.D.John, ¥¥123,3D64,a>b 123,3D64,a>b 一般用小写一般用小写字母表示字母表示3.2 3.2 常量与变量常量与变量注意:注意:注意:注意:•编译系统将大写字母和小写字母认为是两个不编译系统将大写字母和小写字母认为是两个不同的字符同的字符 •建议变量名的长度最好建议变量名的长度最好不要超过不要超过8 8个字符•在选择变量名和其它标识符时,应注意做到在选择变量名和其它标识符时,应注意做到““见名知意见名知意””,即选有含意的英文单词(或其缩,即选有含意的英文单词(或其缩写)作标识符。
写)作标识符 iMyCariMyCar•要求对所有用到的变量作强制定义,也就是要求对所有用到的变量作强制定义,也就是““先定义,后使用先定义,后使用”” 3.3 3.3 整型数据整型数据3.3.13.3.1整型常量的表示方法整型常量的表示方法 整型常量即整常数在C语言中,整常数可用以下三种形式表示:(1)(1)十进制整数十进制整数 如:如:123, -456 42)(2)八进制整数以八进制整数以0 0头的数是八进制数头的数是八进制数 如:如:0123表示八进制数123,等于十进制数 83,-011表示八进制数-11,即十进制数-93)(3)十六进制整数以十六进制整数以0x0x开头的数是开头的数是1616进制数 如:如:0x123,代表16进制数123,等于十进制数 291 -0x12等于十进制数-10 3.3 3.3 整型数据整型数据3.3.2 3.3.2 整型变量整型变量 (1)(1)整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以二进制形式存放的 如如: : int i; /* 定义为整型变量 */ i=10; /* 给i赋以整数10 */ 注意:注意:注意:注意:•十进制数10的二进制形式为1010,Turbo C 2.0和Turbo C++ 3.0为一个整型变量在内存中分配2个字节的存储单元(不同的编译系统为整型数据分配的字节数是不相同的,VC++ 6.0则分配4个字节)。
•数值是以补码数值是以补码(complement) (complement) 表示的 3.3 3.3 整型数据整型数据数值是以补码表示的:数值是以补码表示的:1. 正数的补码和原码相同正数的补码和原码相同 2. 负数的补码:将该数的绝对值的二进制形式按位负数的补码:将该数的绝对值的二进制形式按位取反再加取反再加1例如:求例如:求-10的补码:的补码:最左面的一最左面的一位表示符号位表示符号整型变量的分类整型变量的分类数据类型修饰符(数据类型修饰符(modifiermodifier))Short long signed unsignedShort long signed unsigned共六种共六种有符号基本整型有符号基本整型 (signed)int 有符号短整型有符号短整型 (signed)short (int )有符号长整型有符号长整型 (signed) long (int)无符号基本整型无符号基本整型 unsigned int无符号短整型无符号短整型 unsigned short (int)无符号长整型无符号长整型 unsigned long (int) 注意:注意:括号表示其中的内容是可选的括号表示其中的内容是可选的. . 3.3 3.3 整型数据整型数据 整型变量的分类整型变量的分类•整数类型的有关数据:整数类型的有关数据: 类型 类型说明符 长度 数的范围 基本型 int 2字节 -32768~32767 短整型 short 2字节 -215~215-1 长整型 long 4字节 -231~231-1 无符号整型 unsigned 2字节 0~65535 无符号短整型 unsigned short 2字节 0~65535 无符号长整型 unsigned long 4字节 0~(232-1) 3.3 3.3 整型变量的分类整型变量的分类21亿例如:整数例如:整数1313在内存中实际存放的情况:在内存中实际存放的情况: 3.3 3.3 整型数据整型数据3 3、整型变量的定义、整型变量的定义: : C规定在程序中所有用到的变量都必须在程序中定C规定在程序中所有用到的变量都必须在程序中定义,即义,即““强制类型定义强制类型定义””。
例如例如: : intint a,ba,b(指定变量a、b为整型)(指定变量a、b为整型) unsigned short unsigned short c,dc,d; ;(指定变量c、d为无符(指定变量c、d为无符号短整型)号短整型) long long e,fe,f; ;( (指定变量e、f为长整型)指定变量e、f为长整型) 3.3 3.3 整型数据整型数据例例3.2 整型变量的定义与使用整型变量的定义与使用#include
一个整型变量只能的一个整型变量只能容纳容纳-32768-32768~~3276732767范围范围内的数,无法表示大于内的数,无法表示大于3276732767或小于或小于-32768-32768的数遇此情况就发生遇此情况就发生““溢出溢出””------------最小值开始计最小值开始计数 3.3 3.3 整型数据整型数据3.3.3 3.3.3 整型常量的类型整型常量的类型 (1)一个整数,如果其值在-32768~+32767范围内,认为它是int型,它可以赋值给int型和 short int型变量 (2) 一个整数,如果其值超过了上述范围,而在-2147483637~+2147483647范围内,则认为它是为长整型可以将它赋值给一个long int型变量 (3) 如果所用的C版本(如Turbo C)分配给short int与int型数据在内存中占据的长度相同,则它的表数范围与int型相同因此一个int型的常量同时也是一个short int型常量,可以赋给int型 或 short int型变量 3.3 3.3 整型数据整型数据3.3.3 3.3.3 整型常量的类型整型常量的类型(4) (4) 一个整常量后面加一个字母一个整常量后面加一个字母u u或或U U,认为是,认为是unsigned unsigned intint型,如型,如12345u12345u,在内存中按,在内存中按unsigned unsigned intint规定的方式存放规定的方式存放( (存储单元中最高位不作为符号位,而用来存储数据存储单元中最高位不作为符号位,而用来存储数据) )。
如如果写成果写成-12345u-12345u,则先将,则先将-12345-12345转换成其补码转换成其补码5319153191,然后,然后按无符号数存储按无符号数存储5) (5) 在一个整常量后面加一个字母在一个整常量后面加一个字母l l或或L L,则认为是,则认为是long long intint型常量 例如:例如: 123l 432L 0L 123l 432L 0L 用于函数调用中用于函数调用中 注意:注意: 如果函数的形参为如果函数的形参为long long intint型,则要求实参也为型,则要求实参也为long long intint型3.4.13.4.1浮点型常量的表示方法浮点型常量的表示方法两种表两种表示形式示形式小数小数指数指数0.1230.1231.231.23e-e-1 1注意注意: :字母字母e(e(或或E)E)之前必须有数字,且之前必须有数字,且e e后面的指数后面的指数必须为整数必须为整数1e31e3、、1.8e-31.8e-3、、-123e-6-123e-6、、-.1e-3-.1e-3e3e3、、2.1e3.52.1e3.5、、.e3.e3、、e e 3.4 3.4 浮点型数据浮点型数据规范化的指数形式:规范化的指数形式: 在字母在字母e e(或(或E E)之前的小数部分中,小数点左边)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字应有一位(且只能有一位)非零的数字. . 例如例如: : 123.456123.456可以表示为:可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e0.123456e3, 0.0123456e4, 0.00123456e 其中的其中的1.23456e31.23456e3称为称为““规范化的指数形式规范化的指数形式””。
3.4 3.4 浮点型数据浮点型数据 3.4 3.4 浮点型数据浮点型数据3.4.2 3.4.2 浮点型变量浮点型变量(1)(1)浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占一个浮点型数据一般在内存中占4 4个字节个字节(32(32位位) )与整型数据的存储方式不同,浮点与整型数据的存储方式不同,浮点型数据是按照指数形式存储的系统把一个型数据是按照指数形式存储的系统把一个浮点型数据分成小数部分和指数部分,分别浮点型数据分成小数部分和指数部分,分别存放指数部分采用规范化的指数形式指数部分采用规范化的指数形式类型类型 位数位数 数的范围数的范围 有效数字有效数字float float 32 32 10 10-37 -37 ~ 10~ 1038 38 6~7 6~7 位位doubledouble型型 6464 10 10-307-307~10~10308308 15~16 15~16位位long double 128 10long double 128 10-4931-4931~10~104932 4932 18~1918~19位位 3.4 3.4 浮点型数据浮点型数据(2) (2) 浮点型变量的分类浮点型变量的分类浮点型变量分为单精度(浮点型变量分为单精度(floatfloat型)、双精度(型)、双精度(doubledouble型)和长双精度型(型)和长双精度型(long doublelong double)三类形式。
三类形式例例3.4 3.4 浮点型数据的舍入误差浮点型数据的舍入误差#include <#include
编译系统将浮点型常量作为双精度来处理 例如例如::f = 2.45678 * 4523.65f = 2.45678 * 4523.65 系统先把系统先把2.456782.45678和和4523.654523.65作为双精度数,然后作为双精度数,然后进行相乘的运算,得到的乘也是一个双精度数最进行相乘的运算,得到的乘也是一个双精度数最后取其前后取其前7 7位赋给浮点型变量位赋给浮点型变量f f如是在数的后面加如是在数的后面加字母字母f f或或F F(如(如1.65f, 654.87F1.65f, 654.87F),这样编译系统就),这样编译系统就会把它们按单精度(会把它们按单精度(3232位)处理位)处理•1 1.下列常量中,不属于整型常量的是.下列常量中,不属于整型常量的是 ((A A))012L012L((B B))1212((C C))0x120x12 ((D D))12.012.02 2.下列常量中,不属于实型常量的是.下列常量中,不属于实型常量的是 (A(A))12. 12. (B(B))12L 12L (C (C))-12E-1-12E-1 (D (D))0.12E10.12E1习题习题D B 1 1.数据占用的内存字节数称为该数据的.数据占用的内存字节数称为该数据的 。
•2 2..C C语言规定常量的类型有:整型、实语言规定常量的类型有:整型、实型、型、 型和型和 型•3 3.用十进制表示整型常量.用十进制表示整型常量-017-017和和-0xf-0xf,,分别为分别为 和和 习题习题数据长度数据长度 字符串字符串 字符字符-15 -15 作业作业3.3 3.3 ((2 2)) ((3 3)) ((6 6)) ((7 7))3.43.4 3.5 3.5 字符型数据字符型数据 3.5.1 3.5.1 字符常量字符常量(1)(1)用单引号包含的一个字符是字符型常量用单引号包含的一个字符是字符型常量(2)(2)只能包含一个字符只能包含一个字符‘‘a’,’Aa’,’A’, ‘1’’, ‘1’‘‘abcabc’’、、““a”a” 3.5 3.5 字符型数据字符型数据 有些以有些以“\ \”开头的特殊字符称为转义字符开头的特殊字符称为转义字符\ \n n 换行换行 ASCIIASCII代码代码 1010\ \t t 横横向跳格向跳格/ /水平制表水平制表 9 9\b \b 退格退格 8 8\ \r r 回回车车 1313\\ \\ 反反斜杠斜杠 9292\ \dddddd 表示表示1 1到到3 3位八进制数字。
位八进制数字 如如 \ \101 A101 A\ \xhhxhh 表示表示1 1到到2 2位十六进制数字位十六进制数字. . 如如 \x07 \x07 响铃响铃注意:注意: \0 \00 \000 ?\0 \00 \000 ?例例3.5 3.5 转义字符的使用转义字符的使用#include <#include
存放字符常量,注意只能放一个字符•定义:定义: char c1,c2;char c1,c2;•赋值:赋值: c1c1==‘‘a’a’;;c2c2== ‘‘b’ b’ ;; 一个字符变量在内存中占一个字节一个字符变量在内存中占一个字节3.5.3 3.5.3 字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法•字符常量如何存放到一个字符变量?字符常量如何存放到一个字符变量?注意: 字符型数据和整型数据之间可以通用字符型数据和整型数据之间可以通用既可以以字符形式输出,也可以以整数形式输出例例例例3.6 3.6 3.6 3.6 向字符变量赋以整数向字符变量赋以整数向字符变量赋以整数向字符变量赋以整数 #include <#include <#include <#include
相互赋值相互赋值相互赋值例例3.7 3.7 大小写字母的转换大小写字母的转换 #include <#include
如:如:假设C被指定为字符变量 :char c c=’a’; c=”a”;c=”CHINA”; 结论:结论:不能把一个字符串常量赋给一个字符变量•C规定:在每一个字符串常量的结尾加一个 “字符串结束标志”,以便系统据此判断字符串是否结束C规定以字符’\0’作为字符串结束标志 如:如:如果有一个字符串常量”CHINA” ,实际上在内存中是:CHINA\0 它占内存单元不是5个字符,而是6个字符,最后一个字符为’\0’但在输出时不输出’\0’ 3.5 3.5 字符型数据字符型数据 3.6 变量赋初值 字符串常量(1)C语言允许在定义变量的同时使变量初始化如如: : int a=3; // 指定a为整型变量,初值为3 float f=3.56; // 指定f为浮点型变量,初值为3.56 char c= ‘a’; // 指定c为字符变量,初值为‘a’ 。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





