数据类型、运算符和表达式数据、类型、运算符、表达式.ppt
白 雪 飞中国科学技术大学电子科学与技术系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章章 数据类型、运算符和表达式数据类型、运算符和表达式数据类型、常量和变量lC的数据结构是以数据类型形式出现的l由前述数据类型可以构造出更复杂的数据结构lC语言的数据有常量和变量之分l常量和变量都分别属于某一数据类型l程序中用到的所有数据都必须指定类型l本章仅介绍基本数据类型4 4C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式标识符(Identifier)l标识符n变量名、符号常量名、函数名、类型名l标识符命名规范n由字母、数字、下划线(Underscore,_)组成n第一个字符必须为字母或下划线nC语言标识符是大小写敏感的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章章 数据类型、运算符和表达式数据类型、运算符和表达式常量(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(total=%d,total);.不会被替换=total=12*30;常量符号常量8 8C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式变量(Variables)l其值可以改变的量称为变量l变量有一个名字,即标识符l变量在存储器中占据一定的存储单元l变量占据存储空间的大小由其类型决定l变量名表示存储变量的存储单元地址l程序使用变量名表示这个变量所占据的存储单元里存储的数据的值l变量要“先定义,后使用”9 9C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式变量的存储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十六进制(Hexadecimal)n以0 x或0X开头,用af或AF表示1015n例如,0 x123、-0X45、0 x3AB、-0 xabc1212C 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章章 数据类型、运算符和表达式数据类型、运算符和表达式补码举例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上述两种分类方式组合,可得到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章章 数据类型、运算符和表达式数据类型、运算符和表达式有符号数与无符号数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 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-231 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;/*定义有符号基本整型变量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 11 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章章 数据类型、运算符和表达式数据类型、运算符和表达式整型常量使用中的类型问题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十进制小数形式n由符号、数字和小数点(必须)组成n整数和小数部分都可省略,但不能同时省略n举例,12.3、-.123、123.、0.、.0l指数形式n由整数(或小数)、e(或E)、整数顺序组成ne或E之前必须有数字,之后必须是整数n举例,123.4e-5表示123.410-5n错例,e1、12e、.e5、e2626C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式规范化指数形式l规范化指数形式n类似于“科学计数法”ne或E之前的小数中,小数点前面有且仅有一个非零数字l举例,123.456n规范化形式,1.23456e2、1.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无穷大(Infinition)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 double128181910-49311049323030C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型数据的舍入误差l由于浮点型变量能够表示的有效数字有限,将有效位以外的数字舍去造成误差l举例float a=123456.789e5,b;b=a+20;printf(a=%fnb=%fn,a,b);运行结果 n思考:1.0/3*3=?3131C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型常量的类型l类型后缀nf、F表示常量是一个单精度型浮点数nl、L表示常量是一个长双精度型浮点数n无任何后缀的浮点型常量视作双精度型l对浮点型变量赋值n一个浮点型常量可以赋值给任何类型的浮点型变量n根据变量类型截取常量的相应有效数字n注意防止出现溢出3232C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型(Character)l字符型常量l字符型变量l字符型数据在内存中的存放形式l字符型数据的使用方法l字符串常量3333C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型常量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*/3535C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据在内存中的存放形式l一个字符型数据占一个字节的空间l字符型数据以其ASCII码形式存放l字符型数据的存放形式与只占一个字节长度的整型数据完全相同01100001c1=a(ASCII=97)00110010c1=2(ASCII=50)3636C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据的使用方法l可以把字符型数据视作一种长度为1字节的整型数据处理n当使用字符型数据时,与使用这个字符的ASCII码(一个8位整数)是完全一样的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章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型变量的符号l字符型变量与整型变量一样,也分为有符号数与无符号数l无符号字符nunsigned char c;n举例,表示一个班级的人数(=!=l逻辑运算符!&|l位运算符|&l赋值运算符=+=-=*=/=%=l下标运算符l其他运算符()4646C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的优先级(Precedence)l优先级n运算符的运算次序按优先级由高到低执行n可以用圆括号()改变运算符的执行次序l举例na+b*cd/e/*先算乘除,后算加减*/*乘除比加减优先级高*/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章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的结合方向规则l单目运算符的结合方向都是“从右向左”n!、+、-、+(正号)、-(负号)n*(指针运算符)、&(地址运算符)nsizeof、(type)l赋值运算符的结合方向是“从右向左”l三目运算符的结合方向是“从右向左”n唯一的三目运算符:条件运算符?:l其他运算符的结合方向都是“从左向右”4949C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式优先级与结合方向总结l不同优先级的运算符,运算次序按优先级由高到低执行l同一优先级的运算符,运算次序按结合方向的规定执行l可以使用圆括号()明确运算次序n圆括号()具有最高的优先级5050C C语言程序设计语言程序设计-第第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=(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章章 数据类型、运算符和表达式数据类型、运算符和表达式自增、自减运算符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+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+)+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举例,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,exp2n逗号运算符的优先级最低,“自左向右”结合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语言程序设计语言程序设计-第第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*/putchar(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语言程序设计语言程序设计-第第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章章 数据类型、运算符和表达式数据类型、运算符和表达式格式输出函数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需要输出的数据n可以是变量、常量、表达式、函数调用等n输出数据按顺序与“格式说明”对应输出7272C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数printf的格式举例printf(a=%d b=%d,a,b);格式说明格式说明普通字符普通字符输出列表输出列表输出结果a=3 b=47373C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式字符格式字符说 明d,i有符号十进制整数,正数不输出符号o无符号八进制整数,不输出前导0 x,X无符号十六进制整数,不输出前导0 x或0Xu无符号十进制整数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-输出的数字或字符向左靠齐+输出的数字一直带符号,即正号也输出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);/*0 x0004d2*/printf(%10.5E,f);/*-5.67800E+01*/printf(%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语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数scanf使用说明l“地址列表”中是变量的地址,而非变量nscanf(%d,&i);l关于输入格式n格式字符串中的普通字符须按相应位置输入n除字符型(%c)外,输入项之间用一个或多个空白字符分隔,包括空格、回车、制表符n空白字符会作为%c对应的输入,如果需要输入下一个非空白字符,可以用%1sn如规定了最大宽度,且输入数据超出宽度,则按宽度截取数据7878C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式字符格式字符说 明d有符号十进制整数i有符号整数,可以是八进制(带前导0)或十六进制(带前导0 x或或0X)o有符号八进制整数,可以带或不带前导0 x,X有符号十六进制整数,可以带或不带前导0 x或0Xu无符号十进制整数c输入一个字符,包括空白字符s输入无空白字符的字符串,不需要用括起来f,e,E,g,G浮点数,可以用小数形式或指数形式%输入一个%7979C C语言程序设计语言程序设计-第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式附加格式字符格式字符说 明h有符号或无符号短整型l有符号或无符号长整型或双精度型L长双精度型m一个正整数,输入数据的最大宽度*需要输入数据,但是在赋值时被跳过8080C C语言程序设计语言程序设计-第第2 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程序设计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:字母大小写转换(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章章 数据类型、运算符和表达式数据类型、运算符和表达式