




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据类型数据类型运算符运算符表达式表达式共 62 页 第 2 2 页l 数据的描述规则l 数据的操作规则共 62 页 第 3 3 页基本符号基本符号 数据类型数据类型运算符和表达式运算符和表达式数据类型转换数据类型转换自增运算和自减运算自增运算和自减运算位运算位运算共 62 页 第 4 4 页程序设计语言的基本规则包括程序设计语言的基本规则包括l 常数常数l 变量变量l 运算符运算符l 表达式表达式l 函数函数xaxfsin536 . 3)(什么是语言规则?什么是语言规则?为什么要有这些规则?为什么要有这些规则? 表达式表达式常数变量变量函数函数运算符运算符共 62 页 第 5 5 页 常数常
2、数3 3、5 5和和3.63.6的存放空间是否相同?的存放空间是否相同? 变量变量a a如何表示?如何存放?如何表示?如何存放? 计算机如何知道计算机如何知道3.63.6和和a a之间的关系?之间的关系? 和和sin xsin x 如何输入?如何存放?如何输入?如何存放? 计算机如何识别计算机如何识别“=”=”?运算结果放在?运算结果放在哪里?哪里?计算机完成上述计算,首先要计算机完成上述计算,首先要解决数据的解决数据的输入输入和和存放存放问题问题问题53共 62 页 第 6 6 页 程序的任务是对数据进行处理,数据程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加是程序处理的对
3、象,而运算符是施加给这些数据的操作。给这些数据的操作。 数据和运算符是表达式的基本元素数据和运算符是表达式的基本元素数据的存储数据的存储数据的操作数据的操作程序程序共 62 页 第 7 7 页C C语言语言的基本字符集的基本字符集l 数数 字字:0 1 2 3 4 5 6 7 8 9l 字字 母母:a b c z A B C Zl 运运 算算 符符:+ - * / % = = != = & | & | ( ) - . ! ? : , ; “ l 特殊符号:特殊符号:_(下划线下划线) 回车回车(r) 换行换行(n) 制表符制表符(t) 基本字符集基本字符集共 62 页 第 8
4、8 页C语言语言的标识符的标识符 包括:包括:变量名、函数名、文件名、数组名、变量名、函数名、文件名、数组名、 类型名等。类型名等。 规则:规则:只能由字母、数字和下划线组成;只能由字母、数字和下划线组成; 第一个字符必须为字母或下划线。第一个字符必须为字母或下划线。 C C语言的标识符:语言的标识符:关键字关键字 用户自定义标识符用户自定义标识符call_n test39 _string1 abccall.n 39test -string1 c2.0 共 62 页 第 9 9 页auto break case char constcontinue default do double else
5、enum extern float for gotoif int long register returnshort signed sizeofstatic structswitch typedef union unsigned voidvolatile whileC语言语言的关键字的关键字用户不能用关键字作标识符!用户不能用关键字作标识符!共 62 页 第 1010 页常量常量在程序运行中,其值保持不变的量称为常量在程序运行中,其值保持不变的量称为常量。常量的表示方法常量的表示方法: 数值常量数值常量 例如:例如:10,3 , 2.68等等 符号常量符号常量 用一个符号代表一个常量用一个符号
6、代表一个常量 必须必须先定义先定义后使用后使用,习惯用习惯用大写大写字母表示。字母表示。例如例如: #define PI 3.1415926 main( ) float l,s,r=2; l=2*PI*r; s=PI*r*r; printf(“l=%d, s=%d”, l,s); 常用这种方式简化程常用这种方式简化程序调试,但是必须在序调试,但是必须在程序的开头定义要使程序的开头定义要使用的符号常量。称为用的符号常量。称为宏定义。宏定义。共 62 页 第 1111 页变量变量在程序执行期间其值可以改变的量。在程序执行期间其值可以改变的量。有关变量的规定有关变量的规定u 变量通过变量名标识,变量
7、名和内存中变量通过变量名标识,变量名和内存中的存储单元相对应。编写程序时通过变量的存储单元相对应。编写程序时通过变量名来存、取存储单元。名来存、取存储单元。u 变量必须先定义,后使用。变量必须先定义,后使用。变量变量memorya88 81000H1000H1001H1001H1002H1002H2552551212u变量定义的位置:函数的开头或复合语句的开头。变量定义的位置:函数的开头或复合语句的开头。共 62 页 第 1212 页命名规则命名规则: 变量名由标识符表示,只能由变量名由标识符表示,只能由字母字母、数字数字和和下划线下划线三种字符组成,且第一个字符必三种字符组成,且第一个字符必
8、须须为为字母字母或或下划线下划线。 例如:例如:下列标识符中,合法的变量名有:下列标识符中,合法的变量名有: M.D.John 12%gf 1add _ce36 age& 5thclass lotus-1-2-3 cd*ef 说明:说明: *变量要变量要“先定义,后使用先定义,后使用” 定义格式定义格式:类型说明符类型说明符 标识符标识符1, 1, , ,标识符标识符n n 例如:例如:int x, y, z; float a, b, c, d; *选变量名时,要做到选变量名时,要做到“见名知义见名知义” 例如:例如:name , st_age , xm , nl , class ,
9、sum * 注意区分大、小写字母:注意区分大、小写字母:SUNSUN、sunsun、SunSun共 62 页 第 1313 页 许多程序设计语言都把它们能处理的数据分成许多程序设计语言都把它们能处理的数据分成若干类,这些类就是数据类型。若干类,这些类就是数据类型。 为什么要划分数据类型?为什么要划分数据类型? 不同类型的数据在计算机内表示不同;不同类型的数据在计算机内表示不同; 不同类型的数据能执行的运算不同;不同类型的数据能执行的运算不同; 计算机能处理的问题中的数据是广义的。计算机能处理的问题中的数据是广义的。变量名代表内存中的存储单元,变量的类型决定存变量名代表内存中的存储单元,变量的类
10、型决定存储单元的大小。储单元的大小。共 62 页 第 1414 页 C语言数据类型语言数据类型: 整型整型 字符型字符型 单精度型单精度型 算术类型算术类型 实型(浮点型)实型(浮点型) 基本类型基本类型 枚举类型枚举类型 双精度型双精度型 指针类型指针类型数据类型数据类型 数组数组 构造类型构造类型 结构体类型结构体类型 共用体类型共用体类型规定:在程序中用到的数据,必须指定数据类型。共 62 页 第 1515 页l整型变量的整型变量的形式形式 (TC 2.0)共六种共六种基本整型基本整型短整型短整型长整型长整型无符号整型无符号整型无符号短整型无符号短整型无符号长整型无符号长整型int in
11、t short int short int long intlong intunsigned intunsigned intunsigned short unsigned short unsigned longunsigned long在内存中占字节数与所选系统有关在内存中占字节数与所选系统有关占内存字节数占内存字节数2 22 24 42 22 24 4整型变量整型变量 ANSI C ANSI C标准没有规定各类数据所占内存的字节数,只要标准没有规定各类数据所占内存的字节数,只要求求longlong型数据不短于型数据不短于intint型,型,shortshort型不长于型不长于intint型。
12、型。共 62 页 第 1616 页l整型变量的整型变量的形式形式共六种共六种基本整型基本整型短整型短整型长整型长整型无符号整型无符号整型无符号短整型无符号短整型无符号长整型无符号长整型int int short int short int long intlong intunsigned intunsigned intunsigned short unsigned short unsigned longunsigned long占内存字节数占内存字节数4 42 24 44 42 24 4规定:规定:shortshort型占型占2 2个字节,个字节,intint和和longlong都占都占4 4
13、个字节。个字节。共 62 页 第 1717 页l整型变量的定义整型变量的定义int i, j; unsigned int x,y;变量有值吗?变量有值吗?占多少字节?占多少字节?共 62 页 第 1818 页类型名称类型名称类型说明符类型说明符字节数字节数位数位数取值范围取值范围基本整型基本整型int432-21474836482147483647-231 231-1216-3276832767-215 215-1短整型短整型short intshort216-3276832767-215 215-1长整型长整型long intlong432-21474836482147483647-231
14、231-1无符号基无符号基本整型本整型unsigned int unsigned432042949672950232-12160655350 216-1无符号无符号短整型短整型unsigned short intunsigned short2160655350 216-1无符号无符号长整型长整型unsigned long int unsigned long 432042949672950232-1 整型数据占用的存储空间和取值范围整型数据占用的存储空间和取值范围 提示:定义变量时注意考虑变量所提示:定义变量时注意考虑变量所占存储容量和取值范围存储容量和取值范围. .共 62 页 第 1919
15、页如:如:int型数的表示范围型数的表示范围: 存储长度为存储长度为16位位无符号整数无符号整数数据位数据位符号位符号位符号位符号位共 62 页 第 2020 页最大的正数?最大的正数?符号位符号位最大的负数?最大的负数?VC+6.0中中int整型数据占整型数据占4个字节;个字节;数值的范围:数值的范围:-21474836482147483647符号位符号位共 62 页 第 2121 页例例:main() short int a,b,c; a=32767; b=3; c=a+b; printf(c=%dn,c); C-32766的补码形式的补码形式,程序运行结果溢出程序运行结果溢出对负数的补码
16、再求一次补,就对负数的补码再求一次补,就可得到该数的原码。可得到该数的原码。共 62 页 第 2222 页 整型常量的不同数值表示方法整型常量的不同数值表示方法十进制数:十进制数:0 09 9八进制数:八进制数:0 07 7,以,以0 0开头开头十六进制数:十六进制数:0 09 9,A AF/aF/af f,以以0 0 x x或或0X0X开头开头 整型常量整型常量 整型常量的类型整型常量的类型w根据值大小默认类型根据值大小默认类型例:例: 3276732767的类型是的类型是short int(int)short int(int)w在常量后面加在常量后面加l l或或L L,表示,表示long
17、intlong int型型 例:例:123L123L,0L0L,432l 432l 都是都是long intlong int型常量型常量共 62 页 第 2323 页实型变量实型变量实型变量分实型变量分类类:按数值的取值范围不同分为三种:按数值的取值范围不同分为三种: 单精度、双精度和长双精度型。单精度、双精度和长双精度型。 实型变量的有关规则:实型变量的有关规则:类型名称类型名称长长long 16字节字节18-19共 62 页 第 2424 页二进制数可表示为:二进制数可表示为: 110.011(B)=1.100112+10尾数尾数的位数决定数的精度,数的精度,阶码阶码的位数决定数的范围数的
18、范围 实型数据也称为浮点数,是指小数点位置可以任意浮动的数实型数据也称为浮点数,是指小数点位置可以任意浮动的数 。 科学记数法表示:十进制数科学记数法表示:十进制数 -12345678 可表示为:可表示为: -12345678 = -1.2345678 107计算机中采用以计算机中采用以2为底的科学记数法存储:为底的科学记数法存储: N= 数符数符尾数尾数2阶码阶码 (其中:数符(其中:数符0为正,为正,1为负为负,尾数和阶码都用二进数表示),尾数和阶码都用二进数表示)实型数据在内存中的存放形式:实型数据在内存中的存放形式: 由于机器存储位数的限制,浮点数都是近似值,多个浮点数由于机器存储位数
19、的限制,浮点数都是近似值,多个浮点数运算会产生误差。双精度型用于扩大存储位数,目的是增加实运算会产生误差。双精度型用于扩大存储位数,目的是增加实数的长度,数的长度,减少累积误差减少累积误差,改善计算精度,改善计算精度。共 62 页 第 2525 页将实数分成两类将实数分成两类: : 浮点数(浮点数(FloatFloat)和双精度数()和双精度数(DoubleDouble)。)。浮点数用浮点数用3232位位表示:表示: 数符数符1 1位,阶码位,阶码8 8位,尾数位,尾数2323位位双精度数用双精度数用6464位位表示:数符表示:数符1 1位位, , 阶码阶码1111位位, ,尾数尾数5252位
20、。为了处理负指数的情况,实际数据的指数存储位。为了处理负指数的情况,实际数据的指数存储时数值加上时数值加上127127(2 27 7-1-1)后进行存储。尾数只存储小)后进行存储。尾数只存储小数部分。数部分。单精度浮点数机内存储格式(占单精度浮点数机内存储格式(占4 4个字节,个字节,3232位):位): 阶码数符尾数1位位8位位23位位单精度实数单精度实数的的精度精度取决于小数部分的取决于小数部分的23位二进制数位所能表达的数值位二进制数位所能表达的数值位数,将其转换为十进制,位数,将其转换为十进制, 最多可表示最多可表示7位十进制数字,所以单精度实位十进制数字,所以单精度实数的有效位是数的
21、有效位是7位。位。共 62 页 第 2626 页实型常量实型常量 (l 两种表示形式:两种表示形式:十进制数形式:十进制数形式:由数字和小数点及正负号组成。由数字和小数点及正负号组成。 (注意:必须有小数点注意:必须有小数点) 例如:例如:23.678 .678 23.23.678 .678 23.指数形式:指数形式:由数字、小数点、字母由数字、小数点、字母e或或E及正负号组成。及正负号组成。(注:注:e或或E之前必须有数字,且后指数必须为整数之前必须有数字,且后指数必须为整数) 例如:例如:3.5E-5 2e3 3.5E-5 2e3 E2 3.6e3.5 .e6 e E2 3.6e3.5 .
22、e6 e 不合法!3.5乘以10的-5次方,即0.0000352乘以10的3次方,即2000对于超过有效数字位的数据,对于超过有效数字位的数据,系统存储时自动舍去。系统存储时自动舍去。共 62 页 第 2727 页 实型常量的类型实型常量的类型: 许多编译系统将实型常量作为许多编译系统将实型常量作为双精度双精度来处理来处理。 例如:例如:float x;float x; x=1.23456 x=1.23456* *6543.21;6543.21; 系统将系统将 1.23456 和和 6543.21 按双精度存储(占按双精度存储(占64位)位)和运算,得到一个双精度的乘积,取前和运算,得到一个双
23、精度的乘积,取前7位赋给位赋给x. 虽然精确,但降低了运算速度。虽然精确,但降低了运算速度。 建议按单精度存储:建议按单精度存储:1.234561.23456f f* *6543.216543.21f f 实型常量可以赋给三种不同的实型变量,系统根据实型常量可以赋给三种不同的实型变量,系统根据类型自动截取相应的有效数字。类型自动截取相应的有效数字。共 62 页 第 2828 页 字符型数据用来表示一个字符值。在计算机内字符型数据用来表示一个字符值。在计算机内部存储字符的部存储字符的ASCII码值。码值。字符常量字符常量 用单引号括起来的一个字符(用单引号括起来的一个字符( 只能包含一个字符)只
24、能包含一个字符) 例如:例如: a 、 A 、$ 、 ! abc、“a” 注注: a 与与 A是是 不同的字符常量。不同的字符常量。共 62 页 第 2929 页转义字符:转义字符:l 转义字符的概念转义字符的概念l一种特殊的字符常量,用于表示常用的一种特殊的字符常量,用于表示常用的、但却难以用一般形式表示的不可显示、但却难以用一般形式表示的不可显示字符字符l 转义字符的表示转义字符的表示l用一个转义标识符用一个转义标识符“ ”开头,后面是需开头,后面是需要的转义字符要的转义字符共 62 页 第 3030 页转义字符表转义字符表转义字符转义字符 功功 能能 n 换行换行 v 垂直制表垂直制表
25、b 退格退格 r 回车回车 f 走纸换页走纸换页 t 跳到下一个制表位跳到下一个制表位(7列列) 反斜线字符反斜线字符 单引号字符单引号字符 “ 双引号字符双引号字符 ddd 至位八进制数表示的字符至位八进制数表示的字符 xdd 至位十六进制数表示的字符至位十六进制数表示的字符转义符转义符“ ” 表示将其后表示将其后的字符原来的含义进行的字符原来的含义进行转换,变成某种另外特转换,变成某种另外特殊约定的含义殊约定的含义共 62 页 第 3131 页例:例:main()main() printf(“ctlanguagsberCn”); printf(“ctlanguagsberCn”); pri
26、ntf(“istusef165x6c”); printf(“istusef165x6c”); 屏幕输出:屏幕输出:C languageis useful165转换为十进制为117,是ASCII的u6c转换为十进制为108,是ASCII的l共 62 页 第 3232 页定义形式定义形式: 用用 char类型说明类型说明占存储空间占存储空间 : 一个变量一个字节一个变量一个字节字符变量字符变量一个字符变量只能包含一个字符一个字符变量只能包含一个字符char char a,b,a,b,c ;c ;a=a=1 1; ;b=b=B B; ;c=c=c c; ; 例:例:共 62 页 第 3333 页a
27、a的的ASCIIASCII值为值为97 97 内存中存储形式内存中存储形式0 1 1 0 0 0 0 1例:例: a a、A A、1 10 1 1 0 0 0 0 1在在ASCII范围以内范围以内,整型数据与字符型数据可以通用,整型整型数据与字符型数据可以通用,整型变量和字符型变量可以相互赋值,字符型数据可以直接与变量和字符型变量可以相互赋值,字符型数据可以直接与整型数据进行算术运算。整型数据进行算术运算。整型数整型数97 97 内存中存储形式内存中存储形式0 0 0 0 0 0 0 0低字节高字节共 62 页 第 3434 页main()main() char a; char a; int
28、b; int b; a= a= A ; ; b=a+25; b=a+25; printf(“%c,%d,%c,%d”,a,a,b,b); printf(“%c,%d,%c,%d”,a,a,b,b); 例:例: 计算字符计算字符A与整型数据与整型数据25的和。的和。程序运行结果:程序运行结果:A,65,Z,90共 62 页 第 3535 页字符串常量字符串常量字符串常量中的字符依次存储在内存中的一块连续区字符串常量中的字符依次存储在内存中的一块连续区域,末尾自动添加域,末尾自动添加00作为字符串的结束标志。作为字符串的结束标志。n n个字个字符组成的字符串常量符组成的字符串常量, , 占内存空间
29、为占内存空间为 n+1 n+1 个字节。个字节。c ch hi in na a00字符串结束标记字符串结束标记“空空”字符字符例:例:a a 串长串长 1 1 This is C stringThis is C string 串长串长1616 (空格)空格) 串长串长1 1 (不含空格)不含空格) 串长串长0 0共 62 页 第 3636 页在程序中,可以用字符常量或字符串常量表示单个在程序中,可以用字符常量或字符串常量表示单个字符,例如字符,例如 aa,或,或“a”a”,两者的区别如下:,两者的区别如下:(1 1) 字符串字符串aa在内存中占在内存中占2 2个字节,而字符个字节,而字符a a
30、 在内存中占在内存中占1 1个字节个字节 字符串字符串a a 字符字符aa(2 2) 不能将字符串赋给一个字符变量不能将字符串赋给一个字符变量例:例: char ch1,ch2;char ch1,ch2; ch1=a; /ch1=a; /* *正确正确* */ / ch2=a; / ch2=a; /* *错误错误* */ /a0a共 62 页 第 3737 页1.1.以下不合法的变量名为:以下不合法的变量名为: (A) _123 (B) IF (C) e4 (D)float(A) _123 (B) IF (C) e4 (D)float2.2.指出指出下列字符串的长度下列字符串的长度及输出内容及
31、输出内容: “ 054 054 ” “x56x56”cta cta ” “ntbabntbab” 3 输出输出 ,输出输出V”c a6 输出输出 ab十进制为86对应”V”“ab0efg”“ab011efg”2 ab6 ab efg十进制为9对应ASCII为”t”练 习共 62 页 第 3838 页算术运算符和算术表达式算术运算符和算术表达式1.1.算术运算符算术运算符 2.2.算术表达式:算术表达式: 由算术运算符、常数、变量、函数和圆括号组成。由算术运算符、常数、变量、函数和圆括号组成。 应注意:左右括号必须配对,多层括号都用圆括号表示。应注意:左右括号必须配对,多层括号都用圆括号表示。
32、例如:例如: a+b+ aa+b+ a* *b/c+2.8b/c+2.83.3.优先级:优先级:高于高于4.4.结合性:结合性:“左结合性左结合性”或称为或称为“自左至右的结合方向自左至右的结合方向”即运算对即运算对象先与左边的运算符结合。象先与左边的运算符结合。 例如:例如:a - b + ca - b + c 注意注意: /: /是除法运算符。当两个整数相除时为整除。是除法运算符。当两个整数相除时为整除。 9/2=4; -9/2=-4; (9/2=4; -9/2=-4; (若有一个是负数若有一个是负数, ,采取向零取整采取向零取整) ) % %是取余数运算符是取余数运算符, ,只能作用于两
33、个整数。运算结果的符号与被只能作用于两个整数。运算结果的符号与被除数的符号一致。除数的符号一致。 9%2=1 ; -9%2=-1 ; 9%-2=1; 9%2=1 ; -9%2=-1 ; 9%-2=1; 运算符是描述各种操作的运算符是描述各种操作的符号。符号。共 62 页 第 3939 页符号符号说明说明优先级优先级结合性结合性算术表达式算术表达式+-单目取正单目取正单目取负单目取负1414从右到左从右到左a=+8b=-a*/%乘乘除除取余取余131313从左到右从左到右a=12*5.5b=14/6.5c=12%5+-加加减减1212从左到右从左到右a=15+8.5b=18-8.5基本算术运算符
34、基本算术运算符共 62 页 第 4040 页例例: 将下列数学表达式将下列数学表达式写成符合写成符合C语言规则的表达式语言规则的表达式. )sinsin(sinzyxbacba(a+b+c)/(sqrt(a)+b*( sin(x)+sin(y)+sin(z) 表达式必须书写在一行,其中表达式必须书写在一行,其中sqrt(a)和和sin(x)、sin(y)、sin(z)都是数学函数的引用,表达式中用了都是数学函数的引用,表达式中用了三层括号,以保证表达式的运算顺序。三层括号,以保证表达式的运算顺序。 强调强调: 对对C语言表达式的理解和掌握,除了要严格遵循表达语言表达式的理解和掌握,除了要严格遵
35、循表达式构成的规则,还要加强对表达式含义的理解,掌握运算符式构成的规则,还要加强对表达式含义的理解,掌握运算符的优先级和结合规则。在此基础上才能灵活地运用表达式,的优先级和结合规则。在此基础上才能灵活地运用表达式,有效地对实际问题进行描述。有效地对实际问题进行描述。共 62 页 第 4141 页常用的数学库函数:常用的数学库函数: 平方根函数:平方根函数:sqrt(x),sqrt(x),计算计算sqrt(4.0)sqrt(4.0)的值为的值为2.02.0绝对值函数:绝对值函数:fabs(x)fabs(x)幂函数:幂函数: pow(x.n),pow(x.n),计算计算x xn n指数函数:指数函
36、数: exp(x)exp(x),计算,计算e ex x以以e e为底的对数函数为底的对数函数log(x),log(x),计算计算ln x ln x 调用数学函数时,要求在源文件中包含头文件调用数学函数时,要求在源文件中包含头文件math.h.math.h.#include “math.h”#include “math.h”共 62 页 第 4242 页赋值运算符和赋值表达式赋值运算符和赋值表达式1.1.一般赋值运算符:一般赋值运算符:= =赋值表达式:由赋值运算符将一个变量和一个表达式赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。连接起来的式子。形式:形式:变量名变量名= =常
37、量或表达式常量或表达式功能:功能:将右边常量或表达式的值赋给左边的变量将右边常量或表达式的值赋给左边的变量。例:例:a=3; b=c+d ;a=3; b=c+d ; 说明:说明: 赋值后,原来左边的值被右边表达式的值替换;赋值后,原来左边的值被右边表达式的值替换; 如果右边表达式的值的类型与左边变量的类型不一如果右边表达式的值的类型与左边变量的类型不一 致,以左致,以左边变量的类型为准,将表达式值的类型转换为左边变量的类边变量的类型为准,将表达式值的类型转换为左边变量的类型。型。 结合方向结合方向“从右向左从右向左”。 例:例: x=y=a+b;共 62 页 第 4343 页 将一个将一个 d
38、ouble 型数据赋给型数据赋给 float 变量时,截取变量时,截取其前面其前面 7 位有效数字,存放到位有效数字,存放到 float 变量的存变量的存储单元储单元 (32) 位中。但应注意数值范围不能溢出。位中。但应注意数值范围不能溢出。 将一个将一个 float 型数据赋给型数据赋给 double 变量时,数值变量时,数值不变,有效位数扩展到不变,有效位数扩展到 16 位,在内存中以位,在内存中以 64 位位 (bit) 存储。存储。共 62 页 第 4444 页 在定义变量时为其指定值。在定义变量时为其指定值。初始化不是在编译初始化不是在编译时进行时进行,而是在程序运行时完成的而是在程
39、序运行时完成的.例如:例如:int a=5;int a=5;变量的初始化变量的初始化int a,b=5,c=5;int a;int a;a=5;a=5;int a=b=c=5;int a,b,c;b=5;c=5;共 62 页 第 4545 页结果会是什么?结果会是什么?共 62 页 第 4646 页例1:main() int a; double b=3.5; a=b+2.1; printf(“a=%d”,a); 运行结果:a=5共 62 页 第 4747 页#include #include main()main() int c=15,h=20,s; int c=15,h=20,s; s=1/
40、2 s=1/2* *1515* *20;20; printf(s=%d,s); printf(s=%d,s); 运行结果:运行结果:共 62 页 第 4848 页复合赋值运算符复合赋值运算符 复合赋值运算符:复合赋值运算符: 在赋值符在赋值符“=”之前加上其它运算符之前加上其它运算符 共有共有10种复合赋值运算符种复合赋值运算符: += ,=, (算术运算有关)(算术运算有关) , &, =, |= (与位运算有关)(与位运算有关) 例:例:int a=1, b=2, c=2; double x=1.5,y=2,z=2; c*=a-b; c-c*(a-b) 2*(1-2)=-2 int
41、型型 z-=x+y; z=z-(x+y) 2.0-(1.5+2.0)=-1.5 double型型共 62 页 第 4949 页逗号运算符逗号运算符:即:即“,” 优先级:所有运算符中级别优先级:所有运算符中级别最低的运算符最低的运算符。逗号表达式逗号表达式 形式:形式:表达式表达式1 1,表达式,表达式2 2,表达式,表达式n n 求解过程:顺次求解表达式求解过程:顺次求解表达式1 1,表达式,表达式22 最后求解表达式最后求解表达式n n。 表达式值:逗号表达式的值为表达式表达式值:逗号表达式的值为表达式n n的值。的值。 结合性结合性: :左结合左结合例如:例如:a=3a=3* *5,a5
42、,a* *4 4 a=3 a=3* *5,a5,a* *4,a+54,a+5 x=(a=4%3 , a+1, a x=(a=4%3 , a+1, a* *10)10)表达式的值60表达式的值20表达式的值10共 62 页 第 5050 页(1) (1) 优先级优先级 当若干个运算符同时出现在表达式中时,当若干个运算符同时出现在表达式中时,优先级规定了优先级规定了运算的先后次序运算的先后次序。优先级有。优先级有1515级。级。 C C语言把圆括号作为运算符,规定它的优先级最高语言把圆括号作为运算符,规定它的优先级最高(15(15级级) ),从而保证优先运算圆括号内的式子,逗号运算符的级别,从而保
43、证优先运算圆括号内的式子,逗号运算符的级别最低,规定为最低,规定为1 1级。级。(2) (2) 结合性结合性 当若干个具有当若干个具有相同优先级相同优先级的运算符相邻出现在表达式中的运算符相邻出现在表达式中时时, ,结合性规定了运算的先后次序结合性规定了运算的先后次序。分为。分为“从左到右从左到右”和和“从右到左从右到左”两个结合方向。两个结合方向。 大多数运算符的结合方向为大多数运算符的结合方向为 “ “从左到右从左到右”; 单目运算符、赋值运算符和条件运算符的结合方向单目运算符、赋值运算符和条件运算符的结合方向 “ “从右从右到左到左”(单目运算符是指作用于一个操作对象的运算符(单目运算符
44、是指作用于一个操作对象的运算符) )。(3 3)双目运算符两边运算对象的类型必须一致。)双目运算符两边运算对象的类型必须一致。共 62 页 第 5151 页形式:形式:l自动进行自动进行-隐式转换隐式转换 整型、实型和字符型可以混合运算整型、实型和字符型可以混合运算,系统自动转换系统自动转换成占内存字节数最大的操作数类型。成占内存字节数最大的操作数类型。l 强制进行强制进行-显式转换显式转换 根据需要将某一个表达式的值的类型强制转换为根据需要将某一个表达式的值的类型强制转换为用户指定的类型。用户指定的类型。提示:提示:取值范围小的类型转换为取值类型大的类型是安全的;反之取值范围小的类型转换为取
45、值类型大的类型是安全的;反之则不安全。会丢失信息或损失精度。则不安全。会丢失信息或损失精度。 应恰当选取数据类型以保证数值运算的正确性,如果确实需要应恰当选取数据类型以保证数值运算的正确性,如果确实需要进行不同数据类型之间运算时,采用强制类型转换,显示的表达程进行不同数据类型之间运算时,采用强制类型转换,显示的表达程序员的意图。序员的意图。共 62 页 第 5252 页转换规则:转换规则: int unsigned int long int unsigned long int double short , char float(1) float 型数据一律转换成型数据一律转换成double 型
46、数据。型数据。(2) char 和和short int 型数据一律转换成型数据一律转换成 int 型数据型数据 即使两个操作数类型相同,但只要它们同属即使两个操作数类型相同,但只要它们同属 char , short int 或或 float 类型,则转换一定发生。类型,则转换一定发生。(类型提升)。类型提升)。其他类型将根据参与运算的操作数类型由低向高的方向转换。其他类型将根据参与运算的操作数类型由低向高的方向转换。竖直方向的转换表示那些一定竖直方向的转换表示那些一定要发生的转换;横向表示操作要发生的转换;横向表示操作数的类型转换的方向。数的类型转换的方向。优先级低的向优先级高的转换优先级低的
47、向优先级高的转换共 62 页 第 5353 页已知:已知:int i; long e; float f; double d; f = 10 + a + i * f - d / e 注意注意:运算过程中的类型转换:运算过程中的类型转换不是不是变量变量本身数据类型的转换。本身数据类型的转换。共 62 页 第 5454 页强制类型转换强制类型转换 将表达式的值转换为指定类型。将表达式的值转换为指定类型。 形式:(类型名)表达式形式:(类型名)表达式例如:例如:( double)(a+b)( double)(a+b) 说明:说明: () 表达式应用括号括起表达式应用括号括起例如:例如: (int)(x
48、+y) ; 将将x+y的值转换为整型的值转换为整型 (int)x+y; 将将x的值转换为整型的值转换为整型 () 在强制类型转换时,得到一个所需类型的中间变在强制类型转换时,得到一个所需类型的中间变量,原来变量类型未发生变化。量,原来变量类型未发生变化。例如:例如:float x=8.6 ; int y; y=(int)x ;共 62 页 第 5555 页例:分析下列程序的运行结果例:分析下列程序的运行结果.#include stdio.hmain() int a=12,b=3; float x=18.5,y=4.6; printf(%fn,(float)(a*b)/2); printf(%d
49、n,(int)x%(int)y);共 62 页 第 5656 页作用作用:使变量的值增加或减,如:使变量的值增加或减,如:i , i (使用之使用之前前,先使,先使i的值加(减)的值加(减)1)i, i (使用之(使用之后后,使,使i的值加(减)的值加(减)1) +i 先执行先执行i=i+1,再使用,再使用i的值的值 i+ 先使用先使用i的值,再执行的值,再执行i=i+1例如:例如:int a=1 , b; b=+a ; b=a+ ;说明:说明:(1 1)+、- - -为单目运算符为单目运算符(2 2)+ + 、- - -只能用于变量,而不能用于只能用于变量,而不能用于常量常量或或表达式表达式
50、。 例如:例如:10+10+,(,(x+y)+x+y)+, +a, b+ , +a, b+ 中合法的为中合法的为? ?(3 3)自增、自减运算符为)自增、自减运算符为右结合性右结合性(即自右至左)。(即自右至左)。 例如:例如:a+ a+ (a+a+) 共 62 页 第 5757 页main() int i=3,j=3; i+; +j; printf(“i=%d,j=%d”,i,j);(4)单独作一个语句使用时,两种形式的结果一样。单独作一个语句使用时,两种形式的结果一样。(5)当出现在其它表达式中时,两种形式结果不同。当出现在其它表达式中时,两种形式结果不同。main() int i=1,j
51、=1,m,n; m=i+; n=+j; printf(i=%d,m=%dn j=%d,n=%d,i,m,j,n);共 62 页 第 5858 页i=2;k=i+i+i+;执行完分号执行完分号再自增再自增i=?k=?算一算?(6) 运算符组合问题运算符组合问题 C 编译系统在处理时尽可能多地编译系统在处理时尽可能多地 (自左向右自左向右) 将将若干个字符组成一个运算符。为避免误解,最好采若干个字符组成一个运算符。为避免误解,最好采取大家都能理解的写法。取大家都能理解的写法。共 62 页 第 5959 页(7) 函数实参求解顺序问题函数实参求解顺序问题在多数系统中对函数参数的求值顺序是在多数系统中
52、对函数参数的求值顺序是自右而左自右而左。以下这种写法是不提倡的。以下这种写法是不提倡的。例如:例如:main() int a=2,sum; sum=(+a)+(+a); printf(“%d %dn”,a+,+a);不同的编译环境下会产生不同的结果,应尽量少用。共 62 页 第 6060 页例:分析下列程序例:分析下列程序.#include stdio.h #include math.h #define PI 3.1415926main() int a=2,r; float s,z; char c; r=012; c=c+a; c+; s=PI*r*r; z=sqrt(a); printf(“s=%f,z=%f,c=%c”,s,z,c); 共 62 页 第 6161 页 sizeof 运算符 sizeof 10L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 果桑绿色高效栽培技术
- 淮北地区耕地质量与小麦玉米周年产能协同提升技术
- 主要农作物化学农药减量增效技术
- 生物信息学的发展与应用前景试题及答案
- 关键考点:2024年CPMM试题及答案
- 2025重症医学科的血小板减少症诊断和管理
- 高效学习的方法论CPMM试题及答案
- 突围方案2024年国际物流师试题与答案
- 餐饮美学基础 课件 2.2色彩审美
- 考点24电化学原理的综合应用(核心考点精讲精练)-备战2025年高考化学一轮复习考点帮(新高考)(原卷版)
- 压疮课件教学课件
- 水库灌区工程信息化设计说明
- 北师大六年级下册数学全册教案
- 食品经营从业人员健康管理制度-和培训管理制度
- 成人鼻肠管的留置与维护
- 2024年4月自考02378信息资源管理试题及答案
- DZ∕T 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼(正式版)
- 《中电联团体标准-220kV变电站并联直流电源系统技术规范》
- 合理用药知识健康讲座(完美版)课件
- 抗震支吊架安装及验收规程
- (正式版)SHT 3158-2024 石油化工管壳式余热锅炉
评论
0/150
提交评论