2012-第02章基本数据类型、运算符与表达式().ppt_第1页
2012-第02章基本数据类型、运算符与表达式().ppt_第2页
2012-第02章基本数据类型、运算符与表达式().ppt_第3页
2012-第02章基本数据类型、运算符与表达式().ppt_第4页
2012-第02章基本数据类型、运算符与表达式().ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第第2 2章章 基本数据类型、基本数据类型、 运算符与表达式运算符与表达式 掌握变量和常量的概念;掌握变量和常量的概念; 掌握各种整型、字符型、浮点型变量的定义和引掌握各种整型、字符型、浮点型变量的定义和引 用方法;用方法; 掌握赋值运算符、算术运算符、位运算符、逗号掌握赋值运算符、算术运算符、位运算符、逗号 运算符以及运算符以及sizeofsizeof的使用方法;的使用方法; 理解运算符的优先级和结合性的概念,记住所学理解运算符的优先级和结合性的概念,记住所学 的各种运算符的优先级关系和结合性。的各种运算符的优先级关系和结合性。 uu学习目标学习目标 2.12.1 C C语言数据类型语言数据类型 C C 数数 据据 类类 型型 基本类型基本类型 构造类型构造类型 指针类型指针类型 空类型空类型voidvoid 定义类型定义类型typedeftypedef 字符类型字符类型charchar 枚举类型枚举类型enumenum 整整 型型 实型实型 单精度型单精度型floatfloat 双精度型双精度型doubledouble 数组数组 结构体结构体structstruct 共用体共用体unionunion 短整型短整型shortshort 长整型长整型longlong 整型整型intint 本章所介绍本章所介绍 的数据类型的数据类型 2.22.2 常量、变量和标识符常量、变量和标识符 1. 1. 标识符标识符 定义:定义:用来标识变量、常量、函数等的字符序列用来标识变量、常量、函数等的字符序列 组成:组成: 只能由只能由字母、数字、下划线字母、数字、下划线组成,且第一个字母必须是字母或下划组成,且第一个字母必须是字母或下划 线线 C C语言的关键字不能用作变量名语言的关键字不能用作变量名 大小写敏感大小写敏感 长度长度:有效长:有效长度为度为3 32 2个字符个字符。随系统而异,但至少前。随系统而异,但至少前8 8个字符有效个字符有效 命名原则:命名原则: 变量名和函数名中的英文字母一般用小写,以增加可读性变量名和函数名中的英文字母一般用小写,以增加可读性 见名知意见名知意 不宜混淆不宜混淆 如如l l与与I, oI, o与与0 0 例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123 M.D.John3days #33 char$123ab .字符非法字符非法 数字数字3 3不可作首字符不可作首字符 # # 字符非法字符非法 charchar是关键字是关键字 字符非法字符非法 $ $不可作首字符不可作首字符 auto,break,case,char,continue default,do,double,enum,else int,long,register,return,short sizeof,static,struct,switch,typedef union,unsigned,while,extern,float for,goto,if 2.22.2 常量、变量和标识符常量、变量和标识符 2. 2. 常量常量 定义:定义:程序运行时其值不能改变的量(即常数)程序运行时其值不能改变的量(即常数) 常量的分类常量的分类 : 直接常量直接常量( ( 值常量值常量) ) 整型常量整型常量: : 1010、1515、-10-10、-30-30 实型常量:实型常量: 12.512.5、 30.030.0、-1.5-1.5 字符常量字符常量: : A A 、 b b 、 c c 字符串常量字符串常量: : “ “sumsum” ”、“ “A A” ”、“ “123123” ” 符号常量符号常量 用标识符来代表常量。用标识符来代表常量。 其定义格式为:其定义格式为: #define define 符号常量符号常量 常量常量 #define NUM 20 #define PI 3.1415926 #include #include #define PRICE 30#define PRICE 30 void main ( )void main ( ) int num, total; int num, total; num = 10; num = 10; total = num * total = num * PRICEPRICE; ; printf (“total = %d“, total); printf (“total = %d“, total); 运行结果:total = 300 行尾不能有分号行尾不能有分号 definedefine前面一定要有前面一定要有# # 符号常量名最好使用大写符号常量名最好使用大写 符号常量名最好有意义符号常量名最好有意义 2.22.2 常量、变量和标识符常量、变量和标识符 3. 3. 变量变量 定义:定义:程序运行时其值可以被改变的量程序运行时其值可以被改变的量 变量的两要素变量的两要素 :变量名变量名 、变量值、变量值 变量的定义格式变量的定义格式 : 变量的初始化:变量的初始化:定义时赋初始值定义时赋初始值 变量的使用:变量的使用:先定义,后赋值先定义,后赋值 变量定义位置:一般放在函数开头变量定义位置:一般放在函数开头 数据类型数据类型 变量名变量名11,变量名,变量名2 2,变量名,变量名nn; int x, y, z; float radius, length, area; char ch; 例: int a = 2, b, c = 4; float data = 3.67; char ch = A; int x = 1, y = 1, z = 1; int x = y = z = 1; 例1: int student; stadent = 19; /Undefined symbol statent in function main 例2: float a,b,c; c = a % b; /Illegal use of floating point in function main void main ( ) int a, b = 2; float data; a = 1; data = (a + b) * 1.2; printf (“data=%fn”, data); 变量定义 可执行语句 2.3 2.3 简单数据类型与表示范围简单数据类型与表示范围 1. 1. 整型数据整型数据 整型常量整型常量 l l 十进制整数:十进制整数:由数字由数字0 09 9和正负号表示和正负号表示 . . 如如:123,-456,0:123,-456,0 l l八进制整数:由数字八进制整数:由数字0 0开头,后跟数字开头,后跟数字0 07 7表示表示. .如如:0123,011:0123,011 l l十六进制整数:由十六进制整数:由0x0x或或0X0X开头开头, ,后跟后跟0 09,a9,af,Af,AF F表示表示. .如如 0x123,0Xff 0x123,0Xff 定义整数的符号常量 #define NUM1 20 /十进制数20 #define NUM2 020 /八进制数(十进制16) #define NUM3 0x2a /十六进制数(十进制42) 思考题:下列整型常量哪些是非法的? 012,oX7A,00,078,0x5Ac,-0xFFFF,0034,7B。 首字符不能 是字母o 八进制数中不 能有数字8 十进制数中不 能有字母B 2. 2. 整型变量整型变量 整型变量的定义整型变量的定义 int int 变量名变量名 , 变量名变量名2 2,变量名,变量名nn; 定义时可以赋初值,方法:在变量名后面增加定义时可以赋初值,方法:在变量名后面增加“ “= = 数值数值” ” 例: int a; int x, y, z; int m = 2, y = -3; 整型变量的分类整型变量的分类 整整 型(型(intint) int a = -2; int a = -2; /定义一个有符号整型变量定义一个有符号整型变量a a,并赋初值,并赋初值-2-2 int int 在内存在内存4 4个字节长个字节长 短整型(短整型(short intshort int或或shortshort) short int a = 2; short int a = 2; /定义一个有符号短整型变量定义一个有符号短整型变量a a,并赋初值,并赋初值2 2 或或 short a = 2;short a = 2; 占用的内存单元为占用的内存单元为2 2个字节,无论是个字节,无论是TCTC、BCBC,还是,还是VCVC。 长整型(长整型(long intlong int或或longlong) long int a = 234567; long int a = 234567; /定义一个有符号长整型变量定义一个有符号长整型变量a a,并赋初值,并赋初值234567234567 或或 long a = 234567;long a = 234567; 占用的内存单元为占用的内存单元为4 4个字节,无论是个字节,无论是TCTC、BCBC,还是,还是VCVC。 无符号基本型(无符号基本型(unsigned intunsigned int或或unsignedunsigned) unsigned int a = 2; unsigned int a = 2; /定义一个无符号整型变量定义一个无符号整型变量a a,并赋初值,并赋初值2 2 或或 unsigned a = 2;unsigned a = 2; 无符号短整型(无符号短整型(unsigned short intunsigned short int或或unsigned shortunsigned short) unsigned short int a = 2; unsigned short int a = 2; /定义一个无符号短整型变量定义一个无符号短整型变量a a,并赋初值,并赋初值2 2 或或 unsigned short a = 2;unsigned short a = 2; 无符号长整型(无符号长整型(unsigned long intunsigned long int或或unsigned longunsigned long) unsigned long int a = 2; unsigned long int a = 2; /定义一个无符号长整型变量定义一个无符号长整型变量a a,并赋初值,并赋初值2 2 或或 unsigned long a = 2;unsigned long a = 2; 整数常量的分类整数常量的分类 根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型。如果整型常量的值位。如果整型常量的值位 于于-32768-327683276732767之间,之间,C C语言认为它是语言认为它是intint型常量;如果整型常型常量;如果整型常 量的值位于量的值位于-2147483648-214748364821474836472147483647之间,之间,C C语言认为它是语言认为它是 longlong型常量。型常量。 整型常量后加字母整型常量后加字母l l或或L L,认为它是,认为它是long int long int 型常量型常量。比。比 如如123L123L、45l45l、0XAFL0XAFL。 无符号数也可用后缀表示,整型常数的无符号数的后缀为无符号数也可用后缀表示,整型常数的无符号数的后缀为 U U或或u u。例如:例如:358u358u, 0x38Au0x38Au,235Lu 235Lu 均为无符号数。均为无符号数。 前缀、后缀可同时使用以表示各种类型的数。前缀、后缀可同时使用以表示各种类型的数。如如0XA5Lu0XA5Lu表表 示十六进制无符号长整数示十六进制无符号长整数A5A5,其十进制为,其十进制为165165。 3. 3. 实型数据实型数据 实型常量(实数或浮点数)实型常量(实数或浮点数) l l 十进制小数形式:十进制小数形式:由数字由数字0 09 9和小数点组成和小数点组成 . . 如如:0.0,5.6,-:0.0,5.6,- 5.5. l l指数形式:由十进制数,加阶码标志指数形式:由十进制数,加阶码标志e e或或E E以及阶码(只能为整以及阶码(只能为整 数,可以带符号)组成数,可以带符号)组成. . 其一般形式为:其一般形式为:aEn aEn 其中:其中:a a为十进制数,为十进制数,n n为十进制整数,都不可缺少。其可表为十进制整数,都不可缺少。其可表 示为示为a a1010 n n 合法的实数表示:合法的实数表示: 2.1E5 2.1E5 表示表示2.1102.110 5 5 ,3.7E-2 3.7E-2 表示表示3.7103.710-2 -2。 。 非法的实数表示:非法的实数表示: 345345( (无小数点无小数点) ,E7E7( (阶码标志阶码标志E E之前无数字之前无数字) ) , -5-5( (无阶码标志无阶码标志) ) ,50.-E350.-E3( (负号位置不对负号位置不对) ) 实型变量实型变量 l l 单精度实型(单精度实型(floatfloat) float f = 3.14, g;float f = 3.14, g; 这种定义的变量在内存中占这种定义的变量在内存中占4 4个字节(个字节(3232位)的存储单元。位)的存储单元。 l l双精度实型双精度实型(doubledouble) double x, y;double x, y; 这种定义的变量在内存中占这种定义的变量在内存中占8 8个字节(个字节(6464位)的存储单元。位)的存储单元。 4. 4. 字符型数据和字符串常量字符型数据和字符串常量 字符型常量字符型常量 l l 定义:定义:用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符. . 如 a A ? n 101l l 字符常量的值:字符常量的值:该字符的该字符的ASCIIASCII码码值值 如 A65, a97, 048 , n10 l l 转义字符转义字符: :反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示 #include void main ( )void main ( ) printf (“101 x42 Cn“); printf (“101 x42 Cn“); printf (“I say:“How are you?“n“); printf (“I say:“How are you?“n“); printf (“C Programn“); printf (“C Programn“); printf (“Visual C“); printf (“Visual C“); 运行结果:运行结果:( (屏幕显示屏幕显示) ) A B CA B C I say:”How are you?”I say:”How are you?” C ProgramC Program Visual CVisual C 例例: : void main ( )void main ( ) printf(“Yb=n”); printf(“Yb=n”); 运行结果:运行结果: 屏幕显示:屏幕显示:= = 字符串常量字符串常量 l l 定义:定义:用双引号用双引号( (“”“”) )括起来的字符序列括起来的字符序列 l l 存储:存储:每个字符串尾每个字符串尾自动自动加一个加一个 00 作为字符作为字符 串结束标志串结束标志 例例1: 1: 字符串字符串“ “HELLOHELLO” ”在内存中在内存中 0x480x48 0x450x45 0x4C0x4C 0x4C0x4C 0x4F0x4F 0 0 低地址低地址 高地址高地址 HH EE LL LL OO 00 字符串结束标志 例例2: 2: 空串空串 “”“” 0 l l 字符常量与字符串常量不同字符常量与字符串常量不同 0x41 0x41 0例例 A A “A”“A” 例: char ch; ch = “A”; 例: char ch; ch = A; 字符型变量字符型变量 l l 字符型数据类型符是字符型数据类型符是charchar(字符(字符charactercharacter) l l 在内存中占在内存中占1 1个字节(个字节(8 8位)位) l l 字符变量存放字符字符变量存放字符ASCIIASCII码码 l l charchar与与intint数据间可进行算术运算数据间可进行算术运算 l l 5. 5. 简单数据类型的表示范围简单数据类型的表示范围 类类型型 符号符号 关关键键字字 占字占字节节 数数 数的表示范数的表示范围围 整整 型型 有有 (signedsigned)int int 在在1616位系位系统统下下 2 2 -32768-327683276732767 在在3232位系位系统统下下 4 4 -2147483648-2147483648 21474836472147483647 (signedsigned)shortshort 2 2 -32768-327683276732767 (signedsigned)longlong 4 4 -2147483648-2147483648 21474836472147483647 无无 unsigned int unsigned int 在在1616位系位系统统下下 2 2 0 06553565535 在在3232位系位系统统下下 4 4 0 042949672954294967295 unsigned shortunsigned short 2 2 0 06553565535 unsigned longunsigned long 4 4 0 042949672954294967295 实实 型型 有有floatfloat 4 4 绝对值绝对值 1010-37 -37 101038 38 有有doubledouble 8 8 绝对值绝对值 1010-307 -307 1010308 308 有有long doublelong double1010绝对值绝对值 1010-4931 -4931 10104932 4932 字符型字符型 有有charchar 1 1 -128-128127127 无无unsigned charunsigned char 1 1 0 0255255 2.4 C2.4 C语言的运算符与表达式语言的运算符与表达式 变量用来存放数据,运算符则用来处理数据。用运算符变量用来存放数据,运算符则用来处理数据。用运算符 将变量和常量连接起来的符合将变量和常量连接起来的符合C C语法规则的式子被称为语法规则的式子被称为表达式表达式 。 C 运 算 符 算术运算符:(+ - * / % + -) 关系运算符:( = !=) 逻辑运算符:(! a = b = c = 5x = 8; a = b = c = 5; l l 定义:定义:赋值表达式在其后面加分号就构成了赋值表达式在其后面加分号就构成了赋值语句赋值语句。 赋值运算符及赋值表达式的使用赋值运算符及赋值表达式的使用 l l 多个变量连续赋值多个变量连续赋值 例如:例如: a = b = c = 10a = b = c = 10; a = (b = (c = 10)a = (b = (c = 10); 结果:结果:a a、b b、c c 的值都为的值都为1010 l l 赋值表达式的嵌套赋值表达式的嵌套 例如:例如: a = (b = 2) + (c = 3)a = (b = 2) + (c = 3) ( a = (b = 2) + (c = 3) ( a = (b = 2) + (c = 3) 结果:结果:b b为为2 2,c c 为为3 3,a a为为b+cb+c即即5 5 2. 2. 强制类型转换符强制类型转换符 强制转换强制转换 强制类型转换是通过类型转换运算来实现的。其一般强制类型转换是通过类型转换运算来实现的。其一般 形式为:形式为: ( (类型说明符类型说明符) () (表达式表达式) ) 例:例: float x = 3.5, y = 2.1, z; float x = 3.5, y = 2.1, z; int a; int a; a = (int)(x+y); a = (int)(x+y); /结果为结果为5 5 z = (int)x+y; z = (int)x+y; /结果为结果为5.1000005.100000 z = (double)(3/2); z = (double)(3/2); /结果为结果为1.0000001.000000 a = (int)3.6; a = (int)3.6; /结果为结果为3 3 基本算术运算符:基本算术运算符: + + - - * / %* / % l l优先级:优先级: - - - -* / %* / % - - + -+ - 说明:说明: l l “ “- -” ”可为可为单目单目运算符时运算符时, ,右结合性右结合性 l l 两整数相除,结果为整数两整数相除,结果为整数 l l % %要求两侧均为整型数据要求两侧均为整型数据 例:例: 5 / 2 =5 / 2 = -5 / 2.0 = -5 / 2.0 = 例:例: 5 % 2 =5 % 2 = -5 % 2 = -5 % 2 = 1 % 10 = 1 % 10 = 5 % 1 =5 % 1 = 5.5 % 2 5.5 % 2 3. 3. 算术运算符、算术表达式算术运算符、算术表达式 2 2 -2.5-2.5 1 1 -1-1 1 1 0 0 ( ( ) ) 表达式和算术表达式表达式和算术表达式 3. 3. 算术运算符、算术表达式算术运算符、算术表达式 表达式:表达式:用运算符和括号将运算对象(常量、变量和函数用运算符和括号将运算对象(常量、变量和函数 等)连接起来的、符合语言语法规则的式子。等)连接起来的、符合语言语法规则的式子。 算术表达式:算术表达式:表达式中的运算符都是算术运算符的表达式。表达式中的运算符都是算术运算符的表达式。 运算符优先级(到目前为止)运算符优先级(到目前为止) 例:例: 3 + 5 * 83 + 5 * 8、(x + y) / 2 - 1(x + y) / 2 - 1等等 类型强制转换运算符的优先级类型强制转换运算符的优先级 算术运算符的优先级算术运算符的优先级 赋值运算符的优先级赋值运算符的优先级 自增、自减运算符自增、自减运算符+ -+ - l l 作用:使变量值加作用:使变量值加1 1或减或减1 1 l l 种类:种类: 前置前置 +i, -i (+i, -i (先执行先执行i=ii=i+1+1或或i=i-1i=i-1,再使用再使用i i值)值) 后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再执行再执行i=ii=i+1+1或或i=i-1i=i-1) 例:例: j = 3; k = +j; j = 3; k = +j; j = 3; k = j+; j = 3; k = j+; j = 3; printf (“%d”, +j); j = 3; printf (“%d”, +j); j = 3; printf(“%d”, j+); j = 3; printf(“%d”, j+); a = 3; b = 5; c = (+a) * b; a = 3; b = 5; c = (+a) * b; a = 3; b = 5; c = (a+) * b; a = 3; b = 5; c = (a+) * b; /k=4,j=4 /k=3,j=4 /4 /3 /c=20,a=4 /c=15,a=4 4. 4. 自增自减自增自减运算符、符号运算符运算符、符号运算符 负号运算符(负号运算符(“ “- -” ”) 减号()既是一个算术运算符,又是一个负号运算符。负号减号()既是一个算术运算符,又是一个负号运算符。负号 运算符是单目运算符。运算符是单目运算符。例如:例如:a = 2a = 2,那么,那么a a的值就是的值就是2 2。负号运。负号运 算符的优先级比较高,与强制类型转换符是同一个级别。算符的优先级比较高,与强制类型转换符是同一个级别。 5. 5. 逗号运算符、逗号表达式逗号运算符、逗号表达式 位运算符:位运算符:, , 逗号表达式:逗号表达式:用逗号连接起来的表达式。其一般形式为:用逗号连接起来的表达式。其一般形式为: 表达式表达式1 1,表达式,表达式2 2,表达式,表达式k k 优先级:优先级:优先级最低。优先级最低。 结合性:结合性:左结合性左结合性 。即逗号表达式的求值顺序是即逗号表达式的求值顺序是从左向从左向 右右依此计算用逗号分隔的各表达式的值。依此计算用逗号分隔的各表达式的值。 逗号表达式逗号表达式的值:的值:最后一个表达式的值就是整个逗号表达最后一个表达式的值就是整个逗号表达 式的值。式的值。 用途:用途:常用于循环常用于循环forfor语句中语句中。 例如:例如:a+3, b=4, b+a+3, b=4, b+ 例例: : a = 3 * 5, a * 4 a = 3 * 5, a * 4 a = 3 * 5, a * 4, a + 5 a = 3 * 5, a * 4, a + 5 例例: : x = (a = 3, 6 * 3)x = (a = 3, 6 * 3) x = a = 3, 6 * a x = a = 3, 6 * a 例:例:a = 1; b = 2; c = 3;a = 1; b = 2; c = 3; printf (“%d,%d,%d”, a, b, c); printf (“%d,%d,%d”, a, b, c); printf (“%d,%d,%d”, (a, b, c), b, c); printf (“%d,%d,%d”, (a, b, c), b, c); /a=15,表达式值60 /a=15,表达式值20 /赋值表达式,表达式值18,x=18 /逗号表达式,表达式值18,x=3 /1,2,3 /3,2,3 例例: : #include #include vovoid main ( )id main ( ) int x, y = 7; int x, y = 7; float z = 4; float z = 4; x = (y = y + 6, y / z); x = (y = y + 6, y / z); printf (“x = %dn“, x); printf (“x = %dn“, x); 运行结果:运行结果:x = 3x = 3 6. s6. sizeofizeof运算符、复合运算符运算符、复合运算符 sizeofsizeof运算符运算符 功能:功能:获取变量和数据类型所占内存大小(字节数)获取变量和数据类型所占内存大小(字节数) 格式:格式: sizeof sizeof 表达式表达式 sizeofsizeof(数据类型名或表达式)(数据类型名或表达式) 例:例:

温馨提示

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

评论

0/150

提交评论