C语言教程第3章数据类型、运算符与表达式.ppt_第1页
C语言教程第3章数据类型、运算符与表达式.ppt_第2页
C语言教程第3章数据类型、运算符与表达式.ppt_第3页
C语言教程第3章数据类型、运算符与表达式.ppt_第4页
C语言教程第3章数据类型、运算符与表达式.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.1 C语言的数据类型 3.2 常量与变量 3.3 整型数据 3.4 浮点型数据 3.5 字符型数据 3.6 变量赋初值,第3章 数据类型、运算符与表达式,3.7 各类数值型数据间的混合运算 3.8 算术运算符和算术表达式 3.9 赋值运算符和赋值表达式 3.10 逗号运算符和逗号表达式 习题,3.1 C语言的数据类型,单精度型 float (占4字节),双精度型 double (占8字节),3.2 常量与变量,3.2.1 常量和符号常量 1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。 2.常量的分类 (1)整型常量 如:12,-90 (2)实型常量 如:1.72,-9.73, 3.65e-6 (3)字符常量 如:a, +, n, 0 (4)字符串常量 如:“max”, “good”, “123” (5)符号常量 习惯上其常用大写字母。 常量的类型,可通过书写形式来判别。,例3.1 (TL3-1.C) #include #define PRICE 30 void main( ) int num, total; num=10; total =num * PRICE; printf(“total = %dn”, total); ,程序演示,3.2.2 变量 1.变量的概念 在程序运行过程中,其值可以被改变的量称为变量。 2.变量的两个要素 (1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,用户标识符可以作为:,1. 变量名 2. 符号常量 3. 数组名 4. 自定义的函数名 5. 指针变量名 6. 结构体类型名 7. 共用体类型名 8. 枚举类型名 9. 文件指针变量名等,.标识符命名规则 (1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。 (2)有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。 例如,由于student_name和student_number的前个字符相同,有的系统认为这两个变量,是一回事而不加区别。 在Turbo C 中,变量名(标识符)的有效长度为32个字符,缺省值为32。,(3)C语言的关键字不能用作变量名。 注意:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符 (即C语言区分大小写字母) 。 习惯上,变量名和函数名中的英文字母用小写,以增加可读性。 关键字必须用小写。,思考题: 在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?,标识符命名的良好习惯见名知意: 所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。 例如,name/xm(姓名)、 sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。,在C语言程序中,所用的变量必须先定义、后使用。 (P16.C) 变量的分类: (1)整型变量(可用来存放整型常量) (2)实型变量(可用来存放实型常量) (3)字符型变量(可用来存放字符型常量) 注意:C语言中没有字符串变量,程序演示,4.变量的定义与初始化 (1)变量定义的一般格式 存储类型 数据类型 变量名1, 变量名2; 例如: float max, min,length, area; int sum,num1,num2; char c1,c2; double x,y,z;,3.3 整型数据,3.3.1 整型常量的表示方法 .三种表示形式 整型常量即整常数,在语言中可用三种形式表示: 十进制整数 例如10、36。 八进制(以数字开头)。 例如012。 十六进制(以数字+小写字母x开头)。例如0x36。,3.3.2 整型变量,1. 整型数据在内存中的存放形式 数据在内存中是以二进制补码形式存放的。 如果定义了一个整型变量i: int i; /* 定义为整型变量 */ i=10; /* 给 i 赋以整数10 */,负数的补码,2. 整型变量的分类,三种整型变量: (1) 基本整型,以 int 表示。 (2) 短整型, 以short int表示,或以 short 表示。 (3) 长整型, 以 long int 表示,或以 long 表示。,归纳起来,可以用以下6种整型变量,即: 有符号基本整型 signed int 无符号基本整型 unsigned int 有符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long int 无符号长整型 unsigned long int,整型变量的分类,int a; unsigned int b;,一个整数(以13为例)在存储单元中的存储情况,3. 整型变量的定义,int a,b; (指定变量a、b为整型) unsigned short c,d; (指定变量c、d为无符号短整型) long e,f; (指定变量e、f为长整型),例3.2整型变量的定义与使用。,#include void main( ) int a,b,c,d; /*指定a、b、c、d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn“,c,d); 运行结果为 a+u=22,b+u=-14,4. 整型数据的溢出,例3.3 整型数据的溢出。 main( ) int a,b; a=32767; b=a+1; printf(“%d,%d“,a,b); ,运行结果为 32767,-32768,3.3.3 整型常量的类型,注意以下几点: (1) 一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给 int型 和 long int 型变量。,注意以下几点:,(2) 一个整数,如果其值超过了上述范围,而在-2147483648+2147483647范围内,则认为它是长整型,可以将它赋值给一个long int型变量。,注意以下几点:,(3) 如果某一计算机系统的c版本(例如turbo c)确定short int与int型数据在内存中占据的长度相同,则它的表数范围与int型相同。因此,一个int型的常量也同时是一个short int型常量,可以赋给int型或short int型变量。,注意以下几点:,(4) 一个整常量后面加一个字母u,认为是unsigned int型,如12345u,在内存中按unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据,见图2.4(b)。如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。,注意以下几点:,(5) 在一个整常量后面加一个字母 l或 L,则认为是 long int 型常量。,3.4 浮点型数据,3.4.1 浮点型常量的表示方法 实数有两种表示形式: (1) 十进制小数形式。 它由数字和小数点组成(注意必须有小数点)。 .123、 123.、 123.0、 0.0 都是十进制小数形式。,(2) 指数形式。,如 123e3 或 123E3 都代表123103。但注意字母 e (或 E )之前必须有数字,且e后面的指数必须为整数。 如 e3、2.1e3.5、e3、 e 等都不是合法的指数形式。,3.4.2 浮点型变量,1. 实型数据在内存中的存放形式,2. 实型变量的分类,C实型变量分为以下三类: 单精度 ( float 型 占4B) 双精度 ( double 型 占8B ) 长双精度型 ( long double 占8B/10B),对每一个实型变量都应在使用前加以定义,float x,y, (指定x、y为单精度实数) double z; (指定z为双精度实数) long double t; (指定t为长双精度实数),3. 浮点型数据的舍入误差,例3.4实型数据的舍入误差。 main( ) float a,b; a = 123456.789e5; b = a + 20 ; printf(“%f“,b); ,3.4.3 浮点型常量的类型,C编译系统将实型常量作为双精度来处理。,3.5 字符型数据,3.5.1 字符常量 C的字符常量是用单引号(即撇号)括起来的一个字符。 如 a,x,d,?, 等都是字符常量。注意,a和A是不同的字符常量。,转义字符,C还允许用一种特殊形式的字符常量,就是以一个“”开头的字符序列。 n, t, 0 ddd, xhh,3.5.2 字符变量,字符型变量用来存放字符常量,请注意只能放一个字符,不要以为在一个字符变量中可以放一个字符串(包括若干字符)。字符变量的定义形式如下: char c1,c2; c1=a;c2=b;,3.5.3 字符数据在内存中的存储形式及其使用方法,字符的相应的ASCII代码放到存储单元中,例3.6向字符变量赋予整数。,main( ) char c1,c2; c1=97; c2=98; printf(“%c %cn“,c1,c2);/*以字符形式输出*/ printf(“%d %dn“,c1,c2);/*转换为整数形式输出*/ ,字符型数据和整型数据是通用的,例3.7大小写字母的转换。,main( ) char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c %c“,c1,c2); 运行结果为 A B,字符数据与整型数据可以互相赋值,如: int i; char c; i=a; c=97; printf(“%c,%dn“,c,c); printf(“%c,%dn“,i,i); 输出: a,97 a,97,3.5.4 字符串常量,字符串常量是一对双引号括起来的若干字符序列。如: “how do you do.”, “CHINA”, “a”, “123.45”, “” 可以输出一个字符串,如: printf( “how do you do.“);,注意:,不要将字符常量与字符串常量混淆。a是字符常量,“a”是字符串常量,二者不同。 假设 c 被指定为字符变量: char c; c=a; 是正确的。而 c=“a“; 是错误的。 c=“CHINA“ 也是错误的。,字符串结束标志,C规定以字符0作为字符串结束标志。0是一个ASCII码为0的字符,从ASCII代码表中可以看到ASCII码为0的字符是“空操作字符”,即它不引起任何控制动作,也不是一个可显示的字符。,字符串常量与字符常量的区别,例如:a 与 “a” (1)定界符不同:字符常量使用单引号,而字符串常量使用双引号; (2)长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数; (3)存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,3.6 变量赋初值,C语言允许在定义变量的同时使变量初始化。 如: int a=3; /* 指定a为整型变量,初值为3 */ float f=3.56; /* 指定f为实型变量,初值为 3.56 */ char c=a; /* 指定c为字符变量,初值为 a */ 也可以使被定义的变量的一部分赋初值。 如: int a,b,c=5;,所谓变量初始化是指在定义变量 的同时进行赋初值的操作。 变量初始化的一般格式 存储类型 数据类型 变量名1=初值1, 变量名2=初值2; 例如:float radius=2.5, length, area; int a=2,b=3,c; char c1=a, c2=B;,3.7 各类数值型数据间的混合运算,3.8 算术运算符和算术表达式,3.8.1 C运算符简介 1算术运算符 ( + - * / % ) 2关系运算符 ( = = = !=) 3逻辑运算符 ( ! & | ) 4位运算符 ( | & ) 5赋值运算符 (=及其扩展赋值运算符) 6条件运算符 ( ? :),7逗号运算符 (,) 8指针运算符 (*和&) 9求字节数运算符 (sizeof) 10强制类型转换运算符 ( (类型) ) 11分量运算符 (-) 12下标运算符 ( ) 13其他 (如函数调用运算符() 本章只介绍算术运算符和赋值运算符,在以后各章中结合有关内容将陆续介绍其他运算符。,3.8.2 算术运算符和算术表达式,1. 基本的算术运算符 + (加法运算符,或正值运算符。如3+5、+3) - (减法运算符,或负值运算符。如5-2、-3) * (乘法运算符。如3*5) / (除法运算符。如5/3) % (模运算符,或称求余运算符,%两侧必须为整型数据,如7%4的值为3)。,说明,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。,2. 算术表达式和运算符的优先级与结合性,c算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合c语法规则的式子,称c算术表达式。 C语言规定了运算符的优先级和结合性。 左结合性: “自左至右的结合方向” 右结合性:运算符的结合方向为“自右至左”,3. 强制类型转换运算符,其一般形式为: (类型名)(表达式),例3.8强制类型转换。,main() float x; int i; x=3.6; i=(int)x; printf(“x=%f, i=%d“,x,i); 运行结果如下: x=3.600000, i=3 x类型仍为float型,值仍等于3.6。,4. 自增、自减运算符(+/-),其功能详见下表,表1 “+、-”运算符,整型、字符型,单目,指针型 变量,同运算对,第2级,或数组 元素,象的类型,自右向左,如果i的原值等于3,则执行下面的赋值语句: j=+i;(i的值先变成4, 再赋给,j的值为4) =i+;(先将 i的值3赋给,的值为3,然后i变为4),又如: i=3; printf(“%d“,+i); 输出“4”。 若改为 printf(“%d“,i+); 则输出“3”。,注意:,(1) 自增运算符(+)和自减运算符(-),只能用于变量,而不能用于常量或表达式。 如5+或(a+b)+都是不合法的。 (2) +和-的结合方向是“自右至左”。,5. 有关表达式使用中的问题说明,(1) C运算符和表达式使用灵活,利用这一点可以巧妙地处理许多在其他语言中难以处理的问题。 但是应当注意:ANSI C 并没有具体规定表达式中的子表达式的求值顺序。允许各编译系统自己安排。 (i+)+(i+)+(i+) /* i=3 */,(2) C语言中有的运算符为一个字符,有的运算符由两个字符组成,在表达式中如何组合呢? 如 i+ (i+)+ 是理解为(i+)+呢?还是i+(+)呢? C编译系统在处理时尽可能多地(自左而右)将若干个字符组成一个运算符(在处理标识符、关键字时也按同一原则处理)。,(3) C语言中类似上述这样的问题还有一些。例如,在调用函数时,实参数的求值顺序,C标准并无统一规定。 如i的初值为3,如果有下面的函数调用: printf(“%d,%d“,i,i+); Trubo C 编译系统先处理i+,后处理 I(从右向左),即输出4,3。,3.9 赋值运算符和赋值表达式,1. 赋值运算符 变量名=表达式,2. 类型转换,如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。 (1) 将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。 int=float 如:i=3(3.56) int=double 如:j=6(6.783456),(2) 将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。,float=int 如:f=2.0 (2)(4B) double=int 如:f1=7.0(7)(8B) (3) 将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元(32位)中。但应注意数值范围不能溢出。 float= double (4B)(7位有效数字) double= float (8B)(16位有效数字),(4) 字符型数据赋给整型变量,int=char (Turbo C),(5) 将一个int、short、long型数据赋给一个char型变量时,只将其低8位原封不 动地送到char型变量(即截断)。 char=int char= short char= long,(6) 将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中,如果int型数据为正值(符号位为0),则long型变量的高16位补0;如果int型变量为负值(符号位为1),则long型变量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论