《第2章-c语言语法基础(总结)ppt课件.ppt》由会员分享,可在线阅读,更多相关《第2章-c语言语法基础(总结)ppt课件.ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物数据类型和表达式数据类型和表达式数据类型数据类型基本数据类型基本数据类型整型整型int实型(浮点型)实型(浮点型)float double字符型字符型char构造数据类型构造数据类型数组、结构、联合、枚举数组、结构、联合、枚举指针类型指针类型空类型空类型运算:对数据的操作运算:对数据的操作运算符数据运算符数据 表达式表达式例,例,a*8我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一
2、个活的生物数数据的存储和基本数据类型据的存储和基本数据类型我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物数据的存储整型数据数据的存储整型数据设整数在内存中用设整数在内存中用2个字节存储个字节存储1 000 0001 1000 00010 000 0001 1000 0001符号位符号位1:负数:负数0:正数:正数我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物实型和字符型数据的存储实型和字符型数据的存储实型数据的存储实
3、型数据的存储-1.2345e+02符号位符号位 阶码阶码 尾数尾数字符型数据的存储字符型数据的存储一个字节存储一个字节存储ASCII码码我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物基本基本数据类型数据类型整型整型有符号整型有符号整型 无符号整型无符号整型 数据长度数据长度int unsigned int 16或或32位位short int unsigned short int 16位位long int unsigned long int 32位位字符型字符型char 8位位实型(浮点型)实型(浮点型)单
4、精度浮点型单精度浮点型 float 32位位双精度浮点型双精度浮点型 double 64位位我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物基本基本数据类型数据类型整型整型扩展的整数类型:扩展的整数类型:short long unsigned int有符号整型有符号整型 无符号整型无符号整型 数据长度数据长度int unsigned int 16或或32位位short int unsigned short int 16位位long int unsigned long int 32位位我吓了一跳,蝎子是多么丑
5、恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物整数类型的取值范围整数类型的取值范围int 32位位 -2147483648 2147483647 -231 231-1short int 16位位 -32768 32767 -215 215-1long int 32位位 -2147483648 2147483647 -231 231-1unsigned int 32位位 0 4294967295 0 232-1unsigned short int 16位位 0 65535 0 216-1unsigned long int 32位位
6、 0 4294967295 0 232-1我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物基本基本数据类型数据类型字符型字符型字符具有数值特征字符具有数值特征A 65 0100 0001 整型变量和字符变量的定义和赋值可以互整型变量和字符变量的定义和赋值可以互换换 【 ASCII码码范围】范围】 char c; c = A; 或或 c = 65; int i; i = 65; 或或 i = A;我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错
7、:表里边有一个活的生物基本基本数据类型数据类型实型实型实型(浮点型)数据实型(浮点型)数据单精度浮点型单精度浮点型 float双精度浮点型双精度浮点型 double 存储存储 数据精度数据精度 取值范围取值范围 (有效数字有效数字)float 4字节字节 七七/八八位位 (10-38 1038)double 8字节字节 十六十六位位 (10308 10308 )我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物数据精度和取值范围数据精度和取值范围数据精度数据精度 与与 取值范围取值范围是两个不同的概念:是两个
8、不同的概念:float x = 1234567.89;虽在取值范围内,但无法精确表达。虽在取值范围内,但无法精确表达。 float y = 1.2e55;y 的精度要求不高,但超出取值范围。的精度要求不高,但超出取值范围。并不是所有的实数都能在计算机中精确表示并不是所有的实数都能在计算机中精确表示 实型常量的类型都是实型常量的类型都是double 1234567.80我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物常量常量符号常量符号常量整型常量、实型常量、字符型常量整型常量、实型常量、字符型常量变量变量
9、变量的定义和使用变量的定义和使用常量和变量常量和变量我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物常量常量常量的类型通常由书写格式决定常量的类型通常由书写格式决定123 (整型)整型)4.56 (实型实型) A (字符型字符型)符号常量符号常量:用一个标识符:用一个标识符(用大写字母)(用大写字母)代表一个常量代表一个常量 :PI :EPS # define PI 3.14我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生
10、物应用举例应用举例 求球的表面积和体积求球的表面积和体积# include # define PI 3.14int main(void) double r, s, v; printf(“Enter r: ); scanf(%lf, &r); s = 4.0 * PI * r * r ; v = 4.0 / 3.0 * PI * r * r * r ; printf(s=%f, v=%fn, s, v); return 0;加分号加分号? ?通常用大写字母通常用大写字母我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个
11、活的生物符号常量的优点符号常量的优点# include int main(void) double r, s, v; scanf(%lf, &r); s = 4.0*r*r*3.14 ; v = 4.0/3.0*r*r*r*3.14 ; . return 0;# include # define PI 3.14int main(void) double r, s, v; scanf(%lf, &r); s = 4.0*PI*r*r ; v = 4.0/3.0*PI*r*r*r ; . return 0;3.141593.141593.14159我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它
12、放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物整型常量(整数)整型常量(整数)整数的表示整数的表示三种表现形式:三种表现形式:十进制整数:正、负号,十进制整数:正、负号,09,首位不是,首位不是0例:例: 10,123八进制整数:正、负号,八进制整数:正、负号,07,首位是,首位是0例:例: 010,0123 ,09216进制整数:正、负号,进制整数:正、负号,09,a-f,A-F,前,前缀是缀是0 x,0X例:例:0 x10,0 x123我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:
13、表里边有一个活的生物整数的表示整数的表示123 = 01111011 (B) 二进制二进制 =173 (O) 八进制八进制 =7B (X) 十六进制十六进制123 0173 0 x7b16 020 0 x1010 012 0XA10 010 0 x10不能超出整型数据的取值范围不能超出整型数据的取值范围比长整型数还要大的数只能用实数来表示比长整型数还要大的数只能用实数来表示我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物整数的类型整数的类型判断整数的类型判断整数的类型整数后的字母后缀整数后的字母后缀123L
14、 long123U unsigned123LU unsigned long整数的值整数的值我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物实型常量(实数、浮点数)实型常量(实数、浮点数)实数的表示实数的表示浮点表示法浮点表示法0.123 123.4 12. .12科学计数法科学计数法6.026E-27 1.2e+30 1E-5实数的类型实数的类型double我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物字符型常量字符型
15、常量字符常量字符常量a A 9 + $ ASCII字符集字符集列出所有可用的字符(列出所有可用的字符(256个)个)每个字符:惟一的次序值(每个字符:惟一的次序值( ASCII 码)码)0-9 升序排列升序排列A-Za-z我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物字符的数值特征字符的数值特征字符字符ASCII 码码对字符进行运算对字符进行运算 对字符的对字符的ASCII 码进行运算码进行运算例如:例如:A 的的 ASCII 码码 65则:则:A+1=66,对应字符,对应字符 B区分数字字符和数字区分数
16、字字符和数字 1 1我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物转转义义字字符符反斜杠后跟一个字符或数字反斜杠后跟一个字符或数字字符常量,代表字符常量,代表一个一个字符字符 n 101 x41 A所有字符都可以用转义字符表示所有字符都可以用转义字符表示我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物字符串常量:任意多个字符,放在字符串常量:任意多个字符,放在“”“”中中字符串结束标志字符串结束标志字符串长度字符串长度
17、我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物变量变量在程序运行过程中,其值可以被改变的量。在程序运行过程中,其值可以被改变的量。变量必须先定义,后使用变量必须先定义,后使用定义变量时要指定变量名和数据类型定义变量时要指定变量名和数据类型变量应该先赋值,后引用变量应该先赋值,后引用我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物变量的定义变量的定义变量名:合法的标识符变量名:合法的标识符小写字母;见名知义小写字母;见名
18、知义变量的类型:在定义时指定变量的类型:在定义时指定变量定义的一般形式变量定义的一般形式类型名类型名 变量名表;变量名表;int celsius, fahr; float x;double area, length;变量名变量名代表内存中的一个存储单元,存放该变量的值代表内存中的一个存储单元,存放该变量的值该存储单元的大小由变量的该存储单元的大小由变量的数据类型数据类型决定决定我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物变量的使用变量的使用必须先必须先定义定义,后,后使用使用应该先赋值,后引用应该先赋值
19、,后引用变量的赋值方法变量的赋值方法变量赋初值:在定义变量时对它赋值变量赋初值:在定义变量时对它赋值int a = 5, b = 3;赋值表达式赋值表达式int a, b;a = 5;b = 3;输入输入int a, b;scanf(%d%d, &a, &b);我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物包括包括: :整型数据的输入和输出整型数据的输入和输出实型实型数据的输入和输出数据的输入和输出字符型字符型数据的输入和输出数据的输入和输出数数据的输入和输出据的输入和输出 我吓了一跳,蝎子是多么丑恶和恐
20、怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物整型数据的输入输出整型数据的输入输出printf (格式控制格式控制, 输出参数输出参数1, . , 输出参数输出参数n);scanf (格式控制格式控制, 输入参数输入参数1, . , 输入参数输入参数n);格式控制说明格式控制说明 % 十进制十进制 八进制八进制 十六进制十六进制int %d %o %xlong %ld %lo %lxunsigned %u %o %xunsigned long %lu %lo %lx我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世
21、界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物举例举例 输出整型数据输出整型数据 # include int main(void) printf(%d, %o, %xn, 10, 10, 10); printf(%d, %d, %dn, 10, 010, 0 x10); printf(%d, %xn, 012, 012); return 0; 00101010, 12, a10, 8, 1610, a我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物输入整型数据输入整型数据# includ
22、e int main(void) int a, b; printf(input a, b:); scanf(%o%d, &a, &b); printf(%d%5dn, a, b); printf(%x, %dn, a, b); return 0; input a, b: 17 1715 17f, 17%x%d我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物实型数据的输入和输出实型数据的输入和输出输入输入 scanf()float:%f 或或%e 以小数或指数形式输入一个单精度浮点数以小数或指数形式输入一个单
23、精度浮点数double: %lf或或%le 以小数或指数形式输入一个以小数或指数形式输入一个双精度双精度浮点数浮点数输出输出 printf()float 和和double使用相同的格式控制说明使用相同的格式控制说明%f以小数形式输出浮点数,保留以小数形式输出浮点数,保留6位小数位小数%e以指数形式输出以指数形式输出我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物实型数据输出示例实型数据输出示例# include int main(void) double d = 3.1415926; printf(%f,
24、%en, d, d); printf(%5.3f, %5.2f, %.2fn, d, d, d); return 0; 3.141593, 3.14159e+003.142, 3.14, 3.14一共一共5位,小数位,小数3位,小数点一位位,小数点一位我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物实型数据输入输出示例实型数据输入输出示例假定假定float的精度为的精度为7位,位,double的精度为的精度为16位位 # include int main(void) float f; double d; p
25、rintf(input f, d:); scanf(%f%lf, &f, &d); printf(f = %fn d = %f n, f, d); d = 1234567890123.12; printf(d = %f n, d); return 0;input f, d: 1234567890123.123456 1234567890123.123456f = 1234567954432.000000d = 1234567890123.123540d = 1234567890123.120120我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证
26、实我的猜测没有错:表里边有一个活的生物字符型数据输入输出字符型数据输入输出scanf() 和和 printf() %cchar ch;scanf(%c, &ch);printf(%c, ch);getchar() 和和 putchar()char ch;ch = getchar( );putchar(ch);输入输出一个字符输入输出一个字符我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物输入输出字符示例1# include int main(void) char ch1, ch2; ch1=getchar(
27、); ch2=getchar(); putchar(ch1); putchar(#); putchar(ch2); return 0;AbA#b我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物输入输出字符示例2# include int main(void) char ch1, ch2, ch3; scanf(%c%c%c, &ch1, &ch2, &ch3); printf(%c%c%c%c%c, ch1, #, ch2, #, ch3); return 0;AbCA#b#CA bCA# #b我吓了一跳,
28、蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物输出字符型数据b的的ASCII码码98# include int main(void) char ch = b; printf(%c, %dn, b, b); printf(%c, %dn, 98, 98); printf(%c, %dn, 97, b-1); printf(%c, %dn, ch - a + A, ch - a + A); return 0;0110 0010b98b98b, 98b, 98a, 97B, 66我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什
29、么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物# include int main( ) char ch; ch = b; printf(%c, %dn, ch, ch); return 0;0110 0010b9814262b9801420 x62 printfb %c putchar98 %d142 %o62 %x scanfb %c getchar()98 %d142 %o62 %xscanf(%c, &ch);我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的
30、生物字符运算字符运算大小写英文字母转换大小写英文字母转换 b - a = B - A z - a = Z - A m M a-AA-a0lm - a + A = MlM - A + a = ml8 - 0 = 8l8 + 0 = 8 数字字符和数字数字字符和数字转换转换 9 - 0 = 9 - 0 9 = 9 + 08 8我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物不同类型数据的混合运算,先转换为同一不同类型数据的混合运算,先转换为同一类型,再运算。类型,再运算。自动类型转换自动类型转换 非赋值运算的类
31、型转换非赋值运算的类型转换 赋值运算的类型转换赋值运算的类型转换强制类型转换强制类型转换类型转换类型转换我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物自动类型转换(非赋值运算)自动类型转换(非赋值运算)水平方向:自动水平方向:自动垂直方向:低垂直方向:低 高高 高高 double float unsigned long long unsigned unsigned short 低低 int char, short我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快
32、,证实我的猜测没有错:表里边有一个活的生物自动类型转换(非赋值运算)自动类型转换(非赋值运算)A + 12 10.05 65 77 66.95高高 double float unsigned long long unsigned unsigned short 低低 int char, short我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物自动类型转换(赋值运算)自动类型转换(赋值运算)变量变量 = 表达式表达式计算赋值运算符右侧计算赋值运算符右侧表达式表达式的值的值将赋值运算符右侧将赋值运算符右侧表达式
33、表达式的值赋给左侧的的值赋给左侧的变量变量将赋值运算符右侧表达式的类型将赋值运算符右侧表达式的类型自动转换成自动转换成赋值号左侧变量的类型赋值号左侧变量的类型我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物自动类型转换(赋值运算)自动类型转换(赋值运算)double x;x = 1;x = ?short a = 1000;char b = A;long c;c = a + b;c = ?int ai;ai = 2.56;ai = ?short bi;bi = 0 x12345678Lbi = ?我吓了一跳,
34、蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物强制类型转换强制类型转换强制类型转换运算符强制类型转换运算符(类型名类型名) 表达式表达式(double)3(int)3.8(double)(5/2)(double)5/23.032.02.5我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物强制类型转换示例强制类型转换示例# include int main(void) int i; double x; x = 3.8; i = (in
35、t) x; printf(x = %f, i = %d n, x, i); printf(double)(int)x = %fn, (double)(int)x); printf( x mod 3 = %dn, (int)x % 3); return 0;x = 3.800000, i = 3(double)(int)x = 3.000000 x mod 3 = 0我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物表达式:由运算符和运算对象(操作数)组表达式:由运算符和运算对象(操作数)组成的有意义的运算式子
36、,它的值和类型由成的有意义的运算式子,它的值和类型由参加运算的运算符和运算对象决定。参加运算的运算符和运算对象决定。运算符:具有运算功能的符号运算符:具有运算功能的符号运算对象:常量、变量和函数等表达式运算对象:常量、变量和函数等表达式算术表达式、赋值表达式、关系表达式、逻算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式等辑表达式、条件表达式和逗号表达式等 表达式表达式 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物算术表达式算术运算符算术表达式算术运算符单目单目 + - + -双目
37、双目 + - * / %注意注意/ 整数除整数,得整数整数除整数,得整数1/4 = 0,10/3 = 3% 模模(求余求余): 针对整型数据针对整型数据5%6 = 5,9%4 = 1,100%4 = 0+ 和和 单目运算符,单目运算符, +10 和和 10双目运算符,双目运算符, x+10 和和 y 10 双目运算符两侧操作数的类型要相同,否则,自动双目运算符两侧操作数的类型要相同,否则,自动类型转换后,再运算。类型转换后,再运算。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物自增运算符自增运算符+和自减
38、运算符和自减运算符-int n;n+ +n n- -n (只适合变量运算)(只适合变量运算)使变量的值增使变量的值增1或减或减1+n n+ n = n + 1-n n- n = n - 1取变量的值作为表达式的值取变量的值作为表达式的值+n:n = n + 1;取;取n值作为表达式值作为表达式 +n 的值的值n+:取:取n值作为表达式值作为表达式 n+ 的值;的值;n = n + 1我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物自增运算和自减运算自增运算和自减运算int n, m;n=2;m=+n;n=2
39、;m=n+;n=3n=3m=3m=2m=nm=n+1n=n+1m=n我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物算术运算符的优先级和结合性算术运算符的优先级和结合性单目单目 + - + -双目双目 * / %双目双目 + -高高低低从右向左从右向左-5 + 3%2 = (-5) + (3%2) = -43 * 5 % 3 = (3*5) % 3 = 0-i+ -(i+)我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物
40、写出写出C表达式表达式数学式数学式 C算术表达式算术表达式s(s-a)(s-b)(s-c)(x+2)e2xaacbb242我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物赋值赋值表达式表达式赋值运算符赋值运算符 =x = 3*4优先级较低,结合性从右向左优先级较低,结合性从右向左x = y = 3 x = (y = 3)我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物赋值赋值表达式表达式变量变量 = 表达式表达式计算赋值
41、运算符右侧计算赋值运算符右侧表达式表达式的值的值将赋值运算符右侧将赋值运算符右侧表达式表达式的值赋给左侧的的值赋给左侧的变量变量将赋值运算符左侧的将赋值运算符左侧的变量变量的值作为表达式的值的值作为表达式的值右侧表达式的类型自动转换成左侧变量的类型右侧表达式的类型自动转换成左侧变量的类型int n; double x, y;n = 3.14 * 2;x = 10 / 4;x = (y = 3);我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物复合赋值运算符复合赋值运算符赋值运算符赋值运算符简单赋值运算符简单
42、赋值运算符 =复合赋值运算符复合赋值运算符复合算术赋值运算符复合算术赋值运算符 += -= *= /= %=复合位赋值运算符复合位赋值运算符赋值表达式赋值表达式 变量变量 赋值运算符赋值运算符 表达式表达式x += exp 等价于等价于 x = x + expx *= y - 3x = x * (y-3) 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物关系表达式关系运算符关系表达式关系运算符比较两个操作数,比较的结果:比较两个操作数,比较的结果:真真 假假x y x y x = y x != y优先级优先
43、级 算术运算符算术运算符 = = != 赋值运算符赋值运算符左结合左结合a b = cd = a bch a + 1 d = a + b c3 = x b)= cd = (a b)ch (a + 1)d = (a + b) c)(3 = x) b = cd = a bch a + 1d = a + b cb - 1 = a != c3 = x = 3 & x = a & ch = A & ch = 3 & x = 3 & x = 3) & (x 0) ? x+2 : x*x;int n;(n0) ? 2.9 : 1n = 10n = -102.91.0if ( x0 ) y=x+2;else
44、y=x*x; x+2 x0y = x2 xb) ? a : b;if ( ab ) z = a;else z = b;我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物逗号逗号表达式表达式表达式表达式1, 表达式表达式2, , 表达式表达式n先计算表达式,然后计算表达式先计算表达式,然后计算表达式,,最,最后计算表达式后计算表达式n的值,并将表达式的值,并将表达式n的值作为逗的值作为逗号表达式的值号表达式的值.int a, b, c;(a=2), (b=3), (c=a+b);逗号运算符的优先级最低,左结合逗
45、号运算符的优先级最低,左结合a=2, b=3, c=a+b我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物sum = 0;for(i = 0; i = 100; i+) sum = sum + i;逗号逗号表达式的用途表达式的用途for(i = 0, sum = 0; i = 100; i+) sum = sum + i;for(i = 0, sum = 0; i = 100; i+) sum += i;我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的
46、猜测没有错:表里边有一个活的生物位运算位运算 位逻辑运算位逻辑运算 按位取反按位取反 单目单目 右结合右结合& 按位与按位与 按位异或:相同取按位异或:相同取0,不同取,不同取1| 按位或按位或移位运算移位运算 对操作数右移给出的位数对操作数右移给出的位数复合位赋值运算复合位赋值运算我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物位逻辑运算位逻辑运算x=0 00000000 00000000 y=3 00000000 00000011x & y 00000000 00000000 x | y 0000000
47、0 00000011x y 00000000 000000111010 0101 =1111 注意区分:注意区分:& 和和 |& 和和 | 按位取反按位取反& 按位与按位与 按位异或:相同取按位异或:相同取0,不同取,不同取1| 按位或按位或x & y得得 0 x | y得得 1我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物位移位运算位移位运算 对操作数右移给出的位数对操作数右移给出的位数x3 将将x向左移向左移3位,空出的位用零填补位,空出的位用零填补 00111010 3 将将x向右移向右移3位位 0
48、0111010 3 00000111我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物复合位赋值运算符复合位赋值运算符&=|=a &= b 相当于相当于 a = a & b a = 2 相当于相当于 a = a 2我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 其他运算其他运算长度运算符长度运算符 sizeof单目运算符,计算变量或数据类型的字节长度单目运算符,计算变量或数据类型的字节长度int a;sizeof(a)求
49、整型变量求整型变量 a 的长度,值为的长度,值为4(bytes)sizeof(int)求整型的长度,值为求整型的长度,值为4 (bytes)sizeof(double)求双精度浮点型的长度,值为求双精度浮点型的长度,值为8 (bytes)我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物运算符的优先级和结合性运算符的优先级和结合性( )! - + + - (类型名)类型名)sizeof* / %+ - = !=&|? : = += -= *= /= %=,我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在
50、这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物程序解析大小写字母转换程序解析大小写字母转换 #include int main(void) char ch; printf(input characters: ); ch = getchar(); while(ch != n) if(ch = A & ch = a & ch = z ) ch = ch - a + A; putchar(ch); ch = getchar(); rerurn 0;input 10 characters: Reold 123?rEOLD 123? while(ch = getcha