《数据类型运算符和表达式》由会员分享,可在线阅读,更多相关《数据类型运算符和表达式(86页珍藏版)》请在金锄头文库上搜索。
1、白 雪 飞中国科学技术大学电子科学与技术系Dept. of Elec. Sci. & Tech., USTCFall, 2003第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式目 录l数据类型、常量和变量的定义l运算符的种类、优先级和结合方向l表达式的类型和求值l简单的C程序设计及基本输入输出2 2C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式C的数据类型 (Data Types)l基本类型n整型、字符型、浮点型(实型)、枚举类型l构造类型n数组类型、结构体类型、共用体类型l指针类型l空类型3 3C C语言程序设计语言程序设
2、计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式数据类型、常量和变量lC的数据结构是以数据类型形式出现的l由前述数据类型可以构造出更复杂的数据结构lC语言的数据有常量和变量之分l常量和变量都分别属于某一数据类型l程序中用到的所有数据都必须指定类型l本章仅介绍基本数据类型4 4C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式标识符 (Identifier)l标识符n变量名、符号常量名、函数名、类型名l标识符命名规范n由字母、数字、下划线(Underscore, _)组成n第一个字符必须为字母或下划线nC语言标识符
3、是大小写敏感的n标识符的名称一般应具有一定的含义n不要与C语言关键字(Keywords)重复n一般不要使用以下划线开头的标识符5 5C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式标识符示例l正确的标识符nstudent、num1、_SUM、_1_2_3nMyName、myname、my_namel错误的标识符nroom3-1包含了其他字符(减号)n2men以数字开头nlong与关键字重复nMr.Zhu包含了其他字符(小数点)6 6C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式常量
4、 (Constants)l常量n程序运行过程中,其值不能被改变的量n例如:12、-6.7、al符号常量 (Symbolic Constants)n用一个标识符代表的常量n相当于把标识符用一个常量简单替换下来n标识符是一个整体,不要试图拆开来替换n含义清楚,一改全改n习惯上符号常量名用大写字母7 7C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式常量示例#define PRICE 30#define NUM 12void main() . . total = NUM * PRICE; total2 = 84 * PRICE2; printf
5、(total=%d, total); . .不会被替换= total = 12 * 30;常量符号常量8 8C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式变量 (Variables)l其值可以改变的量称为变量l变量有一个名字,即标识符l变量在存储器中占据一定的存储单元l变量占据存储空间的大小由其类型决定l变量名表示存储变量的存储单元地址l程序使用变量名表示这个变量所占据的存储单元里存储的数据的值l变量要“先定义,后使用”9 9C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式变量的存
6、储34a变量名存储单元(地址)变量值1010C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型 (Integer)l整型常量的表示方法l整型变量n整型数据在内存中的存放形式n整型变量的类型n整型变量的定义n整型数据的溢出l整型常量的类型1111C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型常量的表示方法l十进制 (Decimal)n例如,123、-456、0l八进制 (Octal)n以0开头,不得含有8或9n例如,0123、-0456n错例,0138、-0912l十六进制 (
7、Hexadecimal)n以0x或0X开头,用af或AF表示1015n例如,0x123、-0X45、0x3AB、-0xabc1212C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型数据在内存中的存放方式l二进制形式n举例,int i=50; /*int类型占2字节*/l补码 (Complement)n正数:与原码一致,首位为0n负数:绝对值取反加一,首位为1n零:各位全为00 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0高地址字节低地址字节1313C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和
8、表达式数据类型、运算符和表达式补码举例l举例nint i=-50; /*int类型占2字节*/0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 01 1 1 1 1 1 1 1 1 1 0 0 1 1 0 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 050的原码-50的补码取反加一1414C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型变量的分类l按占用存储空间的大小划分n基本整型intn短整型short intn长整型long intl按有无符号划分n有符号signedn无符号unsignedl上述两种分
9、类方式组合,可得到6种类型1515C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整数的长度l整数的类型与长度nshort:占2字节(16bit)nlong: 占4字节(32bit)nint: 占2或4字节(16或32bit)n2Bytes = short int long = 4Bytesn若需要精确的长度,可选用short或longl举例nBC3.1:int长度为2Bytesngcc:int长度为4Bytes1616C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式有符号数与无符号
10、数l有符号数n二进制补码表示,首位为符号位n指定signed或缺省情况,即为有符号数l无符号数n没有符号位,只能表示非负数n无符号数类型必须指定为unsignedn若把负数赋值给无符号数,则把该负数的补码当作无符号数进行处理1717C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式有符号数与无符号数举例void main() int i; unsigned j; i=j=-50; i=i/2; /*-25*/ j=j/2; /*32743*/1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0-50的补码i,j/ 21 1 1 1
11、 1 1 1 1 1 1 1 0 0 1 1 10 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1i/2-25的补码j/232743的补码/原码1818C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型数据的取值范围类 型长度 (bit)取值范围signed short int16-215 215-1unsigned short int160 216-1signed int16 or 32-215(31) 215(31)-1unsigned int16 or 320 216(32)-1signed long int32-23
12、1 231-1unsigned long int320 232-11919C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型变量的定义 (Definition)l定义形式nint a, b;nunsigned c;nlong d;nunsigned short e;l变量的定义一般放在一个函数开头的声明部分,关于变量定义的具体内容在以后相关章节里详细介绍2020C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型变量的定义与使用举例void main() int a;/*定义有符号
13、基本整型变量a*/ unsigned b;/*定义无符号基本整型变量b*/ long c;/*定义有符号长整型变量c*/ a = -23;/*a的值为-23*/ b = 45;/*b的值为45*/ c = a + b; /*c的值为22*/2121C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型数据的溢出 (Overflow)l溢出n数据超出了变量能够存储的范围,造成数据丢失或数值改变等l举例void main() int a = 32767; a+; /*32768?*/0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
14、1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0+132767的补码-32768的补码2222C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型常量的类型l常量的类型后缀 (Suffix)nl、L表示常量是一个长整型nu、U表示常量是一个无符号整型数n两种后缀可以一起使用l举例n123l 长整型常数123n456U 无符号整型常数456n789ul无符号长整型常数789n101Lu无符号长整型常数1012323C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型常量使
15、用中的类型问题l对整型变量赋值n常量的值不要超过变量的取值范围l直接使用常量n带有l、L、u、U等后缀的整型常量一般用于函数调用n不带有后缀的整型常量的类型,是根据其数值大小所处的范围来确定的2424C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型 (Floating Point)l浮点型常量的表示方法l浮点型变量n浮点型数据在内存中的存放形式n浮点型变量的类型n浮点型数据的舍入误差l浮点型常数的类型2525C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型常量的表示方法l
16、十进制小数形式n由符号、数字和小数点(必须)组成n整数和小数部分都可省略,但不能同时省略n举例,12.3、-.123、123.、0.、.0l指数形式n由整数(或小数)、e(或E)、整数顺序组成ne或E之前必须有数字,之后必须是整数n举例,123.4e-5表示123.410-5n错例,e1、12e、1.2e3.4、.e5、e2626C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式规范化指数形式l规范化指数形式n类似于“科学计数法”ne或E之前的小数中,小数点前面有且仅有一个非零数字l举例,123.456n规范化形式,1.23456e2、1.
17、23456E+002n非规范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-52727C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型数据在内存中的存放方式l二进制规范化指数形式l小数部分长度与能表示的精度有关l指数部分长度与能表示的数值范围有关1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0指数部分e小数部分f符号s2828C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式几个特殊的数l无穷大 (Infi
18、nition)nInf举例,1.0/0.0n-Inf 举例,-1.0/0.0lNaN (Not a Number)nNaN举例,sqrt(-1) /*开平方*/n-NaN 举例,-sqrt(-1)l零 (Zero)n浮点数用特殊的形式表示零2929C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型变量的类型l分类n单精度 floatn双精度 doublen长双精度 long doublel长度和取值范围类 型长度 (bit)有效数字绝对值范围float326710-371038double64151610-30710308long d
19、ouble128181910-49311049323030C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型数据的舍入误差l由于浮点型变量能够表示的有效数字有限,将有效位以外的数字舍去造成误差l举例float a=123456.789e5, b;b = a + 20; /*b=12345678920?*/printf(a=%fnb=%fn, a, b);运行结果 a=12345678848.000000 b=12345678848.000000n思考:1.0/3*3=?3131C C语言程序设计语言程序设计 - - 第第2 2章章 数
20、据类型、运算符和表达式数据类型、运算符和表达式浮点型常量的类型l类型后缀nf、F表示常量是一个单精度型浮点数nl、L表示常量是一个长双精度型浮点数n无任何后缀的浮点型常量视作双精度型l对浮点型变量赋值n一个浮点型常量可以赋值给任何类型的浮点型变量n根据变量类型截取常量的相应有效数字n注意防止出现溢出3232C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型 (Character)l字符型常量l字符型变量l字符型数据在内存中的存放形式l字符型数据的使用方法l字符串常量3333C C语言程序设计语言程序设计 - - 第第2 2章章 数据类
21、型、运算符和表达式数据类型、运算符和表达式字符型常量l单引号括起来的一个字符n举例,a、A、1、 、?n错例,abc、我l转义字符n以开头的特殊字符nddd 1到3位8进制数ASCII码代表的字符nxhh 1到2位16进制数ASCII码代表的字符n举例,n、t、123、x3A3434C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型变量l字符型变量只能存放一个字符l定义与使用void main() char c1, c2; /*定义字符型变量c1和c2*/ c1 = a; /*c1的值为a*/ c2 = 2; /*c2的值为2*/35
22、35C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据在内存中的存放形式l一个字符型数据占一个字节的空间l字符型数据以其ASCII码形式存放l字符型数据的存放形式与只占一个字节长度的整型数据完全相同01100001c1=a(ASCII=97)00110010c1=2(ASCII=50)3636C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据的使用方法l可以把字符型数据视作一种长度为1字节的整型数据处理n当使用字符型数据时,与使用这个字符的ASCII码(一个8位整数)
23、是完全一样的n字符型数据的用法与整型数据完全一样,包括运算、赋值、输入、输出等n字符型数据使用过程中,同样需要注意溢出、符号等问题l是字符还是整数,只有在输出时才有意义3737C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据使用举例void main() char c; int i, j; c = 97;/*c = a*/ i = c + 20;/*i = 117*/ j = 2;/*j = 50*/ printf(%c, %dn, c, c); /*a, 97*/3838C C语言程序设计语言程序设计 - - 第第2 2章章
24、数据类型、运算符和表达式数据类型、运算符和表达式字符型变量的符号l字符型变量与整型变量一样,也分为有符号数与无符号数l无符号字符nunsigned char c;n举例,表示一个班级的人数 ( = = !=l逻辑运算符! & |l位运算符 | &l赋值运算符= += -= *= /= %= l下标运算符l其他运算符()4646C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的优先级 (Precedence)l优先级n运算符的运算次序按优先级由高到低执行n可以用圆括号( )改变运算符的执行次序l举例na+b*cd/e/*先算乘除,后算
25、加减*/*乘除比加减优先级高*/n(a+b)*(c-d)/e/*先算加减,后算乘除*/4747C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的结合方向 (Associativity)l结合方向n当一个操作数两侧的运算符优先级相同时,运算次序按照结合方向的规定进行l举例na+b-c/*+和-的结合方向都是从左向右*/*b先与+结合计算a+b,然后执行减法*/na=b=1/*=的结合方向是从右向左,先计算b=1*/4848C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的结
26、合方向规则l单目运算符的结合方向都是“从右向左”n!、+、-、+(正号)、-(负号)n*(指针运算符)、&(地址运算符)nsizeof、(type)l赋值运算符的结合方向是“从右向左”l三目运算符的结合方向是“从右向左”n唯一的三目运算符:条件运算符?:l其他运算符的结合方向都是“从左向右”4949C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式优先级与结合方向总结l不同优先级的运算符,运算次序按优先级由高到低执行l同一优先级的运算符,运算次序按结合方向的规定执行l可以使用圆括号( )明确运算次序n圆括号()具有最高的优先级5050C C
27、语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式表达式 (Expression)l表达式的概念l表达式的类型l表达式求值n算术运算符和算术表达式n赋值运算符和赋值表达式n逗号运算符和逗号表达式5151C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式表达式的概念l表达式n用运算符把操作数连接起来,并符合C语言语法规则的式子n操作数包括常量、变量、函数调用、表达式n广义上,常量、变量、函数调用也可以看作属于表达式的范畴l举例na+2.5*b-6/c+z-max(x,y)n!(a1e-6)&(b
28、=(c+sqrt(f)5252C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式表达式的类型l表达式的类型n表达式的值的类型n取决于操作数的类型以及它们所做的运算l举例na+2.5*b-6/c+z/*混合类型算术运算,值为double类型*/n!(a 5 */b=(int)(x+y);/* b=6, (int)(6.5) */c=(int)x;printf(x=%f, c=%dn, x, c);/* x=2.800000, c=2 */z=(float)d/e;/* z=2.5 */5959C C语言程序设计语言程序设计 - - 第第2 2
29、章章 数据类型、运算符和表达式数据类型、运算符和表达式自增、自减运算符l形式n+i, -i使用i之前,先使i的值加/减1ni+, i-使用i之后,再使i的值加/减1l说明n+i和-i的值是加/减1之后i的值ni+和i-的值是加/减1之前i的值n+和-只能用于变量,不能用于常量和表达式n+和-的结合方向是“自右向左”6060C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式自增、自减运算符举例int i=3, j, a, b=1, c=2;j = +i;/* i=i+1, j=i, i=4, j=4 */j = i+;/* j=i, i=i+
30、1, i=5, j=4 */j = -i+;/* -(i+), i=6, j=-5 */j = i+*2;/* (i+)*2, i=7, j=12 */a = (b+c)+;/* 非法! */a = 34+;/* 非法! */j = +i+;/* 非法! */6161C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式有关表达式使用的问题l表达式中子表达式的求值顺序没有规定ni=3; j=(i+)+(i+)+(i+);/* j=9? 12? */lC编译程序自左向右尽可能多的将若干字符组合成一个运算符、标识符、关键字ni+j /* (i+)+
31、j? i+(+j)? */l调用函数时,实参的求值顺序没有规定ni=3; printf(%d,%dn, i, i+);/* 3,3? 4,3? */6262C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式赋值运算符 (Assignment Operators)l赋值运算符 =n把右侧表达式的值赋给左侧的变量n一般情况下,赋值运算符左侧只能是变量n赋值运算符的优先级较低,“自右向左”结合n运算符两侧类型不一致时,要进行类型转换n注意“赋值”与“等于”的区别,例如i=i+2;l复合赋值运算符n=前加上算术运算符或位运算符,如+=、|=n举例,
32、z*=x+y;/* z=z*(x+y); */6363C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式赋值表达式l赋值表达式nn赋值表达式的值就是所赋的值n运算符右侧的表达式可以是一个赋值表达式l举例na=5; /*表达式的值为5*/na=b=3; /*a=(b=3)*/na=b=c=1; /*a=(b=(c=1)*/na=(b=4)+(c=3);/*b=4, c=3, a=7*/6464C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式逗号运算符l逗号运算符 ,nexp1, exp2
33、n逗号运算符的优先级最低,“自左向右”结合n逗号表达式的值是exp2的值nexp1和exp2都可以又是“逗号表达式”n把多个表达式组合成一个表达式使用l举例nx=(a=3, 6*a) /* a=3, x=18 */nx=a=3, 6*a /* a=3, x=3 */6565C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式基本输入输出l头文件n#include l输入输出函数n字符输出函数putcharn字符输入函数getcharn格式输出函数printfn格式输入函数scanfn字符串输出函数putsn字符串输入函数gets6666C C
34、语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符输出函数putcharl函数说明nint putchar(int c);n输出一个字符到标准输出设备l参数说明nint c 要输出的字符,可以是整数或字符,若超出字符型范围,则只使用低字节l返回值n若成功,返回输出字符的ASCII码值n若失败,返回EOF (End of File)6767C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数putchar举例 (02-01.C)int c, i;putchar(a);/* 输出a */pu
35、tchar(n);/* 输出换行符 */putchar(101);/* 输出e */putchar(101);/* 输出A */c = 1000;i = putchar(c);/* 输出,i=232 */6868C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符输入函数getcharl函数说明nint getchar(void);n从标准输入设备输入一个字符n需要输入回车后,函数才返回l参数说明n无参数l返回值n若成功,返回输入字符的ASCII码值n若失败,返回EOF (End of File)6969C C语言程序设计语言程序设计 -
36、 - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数getchar举例 (02-02.C)int c;c = getchar();/* 输入a后回车 */putchar(c);/* 输出a */c = getchar();/* 是否需要输入? */printf(c=%dn, c);/* 输出c=? 10 */c = getchar();/* 输入abcd后回车 */putchar(c);/* 输出a */putchar(getchar(); /* 输出b */7070C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格
37、式输出函数printfl函数说明nint printf(char* format, args.);n格式化输出若干任意类型数据l参数说明nchar* format 格式控制字符串nargs 需要输出的数据列表,可以多个或没有l返回值n若成功,返回输出的字节数,包括换行符n若失败,返回EOF (End of File)7171C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数printf的参数说明l格式字符串n包括“格式说明”和“普通字符”n“格式说明”由%和“格式字符”组成,将输出数据按指定格式输出n“普通字符”按原样输出l输出列表n需
38、要输出的数据n可以是变量、常量、表达式、函数调用等n输出数据按顺序与“格式说明”对应输出7272C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数printf的格式举例printf(a=%d b=%d, a, b);格式说明格式说明普通字符普通字符输出列表输出列表输出结果a=3 b=47373C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式字符格式字符说 明d, i有符号十进制整数,正数不输出符号o无符号八进制整数,不输出前导0x, X无符号十六进制整数,不输出前导0x或0Xu
39、无符号十进制整数c转换为无符号字符型,以此为ASCII码输出一个字符s输出字符串,直到遇到0或达到指定宽度f小数形式单、双精度数,缺省精度为6位小数e, E以规范化指数形式输出浮点数,缺省精度为6位小数g, G以f(F)和e(E)两种格式中较短的一种输出%输出一个%7474C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式附加格式字符格式字符说 明h有符号或无符号短整型l有符号或无符号长整型L长双精度型m一个正整数,输出数据的最小宽度n一个正整数,输出的小数位数或字符串截取个数 分隔m和n-输出的数字或字符向左靠齐+输出的数字一直带符号,即
40、正号也输出0输出的数字不满规定宽度时,用前导0填充 有符号数字如果没有输出符号,则前面加一个空格#八进制和十六进制数加前缀,浮点数格式也有所改变7575C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数printf举例 (02-03.C)int i=1234; float f=-56.78;printf(i=%+6d, i);/* i= +1234 */printf(%c, i);/* */printf(%#08x, i); /* 0x0004d2 */printf(%10.5E, f);/* -5.67800E+01 */printf
41、(%7.4f%, f);/* -56.7800% */printf(%+6.3G, f);/* -56.8 */printf(%-6.3s, Hello); /* Hel */7676C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式输入函数scanfl函数说明nint scanf(char* format, addrs.);n格式化输入若干任意类型数据l参数说明nchar* format 格式控制字符串naddrs 需要输入的地址列表,可以有多个l返回值n返回输入并赋值的数据项的个数7777C C语言程序设计语言程序设计 - - 第第
42、2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数scanf使用说明l“地址列表”中是变量的地址,而非变量nscanf(%d, &i);l关于输入格式n格式字符串中的普通字符须按相应位置输入n除字符型(%c)外,输入项之间用一个或多个空白字符分隔,包括空格、回车、制表符n空白字符会作为%c对应的输入,如果需要输入下一个非空白字符,可以用%1sn如规定了最大宽度,且输入数据超出宽度,则按宽度截取数据7878C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式字符格式字符说 明d有符号十进制整数i有符号整数,可以是八进制(带前导
43、0)或十六进制(带前导0x或或0X)o有符号八进制整数,可以带或不带前导0x, X有符号十六进制整数,可以带或不带前导0x或0Xu无符号十进制整数c输入一个字符,包括空白字符s输入无空白字符的字符串,不需要用括起来f,e,E,g,G浮点数,可以用小数形式或指数形式%输入一个%7979C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式附加格式字符格式字符说 明h有符号或无符号短整型l有符号或无符号长整型或双精度型L长双精度型m一个正整数,输入数据的最大宽度*需要输入数据,但是在赋值时被跳过8080C C语言程序设计语言程序设计 - - 第第2
44、 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数scanf举例 (02-04.C)int i, j;char c;scanf(%d%d, &i, &j); /* 2 3 or 23 or 23 */scanf(i=%d, j=%d, &i, &j); /* i=2, j=3 or i=2,j=3 */scanf(%d%c%d, &i, &c, &j); /* 2 a 3 = i=2, c= , j出错 */ /* 2a 3 = i=2, c=a, j=3 */8181C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式简单的C程
45、序设计l例1:输入球体半径,求球的体积。l例2:输入大写字母,转换为小写字母。8282C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式例1:球体体积 (02-05.C)#include #define PI 3.1415926void main() float r, V; printf(r=); scanf(%f, &r); V = 4.0 / 3 * PI * r * r * r; printf(V=%fn, V);8383C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式例2:字母
46、大小写转换 (02-06.C)#include void main() char cup, clow; cup = getchar(); clow = cup + a - A; printf(%cn, clow);8484C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式作 业习题 3.6、3.9、3.10、3.12(3)(5)习题 4.5、4.6、4.98585C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式结束The End8686C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式