




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 1 第三章第三章 结构化程序的开发结构化程序的开发 2 提纲提纲 3.1 一些常用的转义序列一些常用的转义序列 3.2 再论再论C语言中的数据类型语言中的数据类型 3.3 混合运算时各种数据类型之间的转换混合运算时各种数据类型之间的转换 3.4 格式化输出格式化输出 3.5 赋值运算符赋值运算符 3.6 自增和自减运算符自增和自减运算符 3.7 条件运算符和逗号运算符条件运算符和逗号运算符 3.8 算术运算符的优先级和结合性算术运算符的优先级和结合性 3 转义序列转义序列含含 义义 描描 述述 n t r a b 换行。将光标定位到下一行的开始位置。换行。将光标定位到下一行的开始位置。 水平
2、制表符。把光标跳到水平制表符。把光标跳到tab键的下一个输出区。键的下一个输出区。 回车。把光标定位在当前行(而不是下一行)的开始回车。把光标定位在当前行(而不是下一行)的开始 位置。位置。 响铃。使系统铃发声。响铃。使系统铃发声。 光标回退一个字符。光标回退一个字符。 反斜扛。打印一个反斜扛字符。反斜扛。打印一个反斜扛字符。 双引号。打印一个双引号字符。双引号。打印一个双引号字符。 3.1 一些常用的转一些常用的转义义序列序列 转义字符转义字符:反斜杠:反斜杠; 转义序列转义序列:反斜杠后面加上特定的一个字符;:反斜杠后面加上特定的一个字符; 4 main() printf(12345678
3、1234567812345678n); printf(1t12t123tHello!n); /*t的使用的使用*/ printf(tHello! n); printf(1234567890); printf(bbHello! n); /*b的使用的使用*/ printf(1234r%n); /*打印打印、和和*/ printf(“a”); /*使系统发出一声使系统发出一声*/ system(pause); return 0; 转义字符举例转义字符举例 123456781234567812345678 1 12 123 Hello! Hello! 12345678Hello! %4 请按任意键继
4、续请按任意键继续 . . . 5 提纲提纲 3.1 一些常用的转移序列一些常用的转移序列 3.2 再论再论C语言中的数据类型语言中的数据类型 掌握:数据类型的种类、取值范围和格式说明符掌握:数据类型的种类、取值范围和格式说明符 3.3 混合运算时各种数据类型之间的转换混合运算时各种数据类型之间的转换 3.4 格式化输出格式化输出 3.5 赋值运算符赋值运算符 3.6 自增和自减运算符自增和自减运算符 3.7 条件运算符和逗号运算符条件运算符和逗号运算符 3.8 算术运算符的优先级和结合性算术运算符的优先级和结合性 6 C语言中只有以下几种基本数据类型:语言中只有以下几种基本数据类型: char
5、:字符型,可以存放字符集中的一个字符字符型,可以存放字符集中的一个字符 int:整型整型 float:单精度浮点型单精度浮点型 double:双精度浮点型双精度浮点型 此外,还有用于限定这些基本类型的类型限定符:此外,还有用于限定这些基本类型的类型限定符: short(限定(限定int)、)、long(限定(限定int 和和double) signed和和unsigned(限定(限定char和任何整数类型)和任何整数类型) 3.2 C语言中的数据类型语言中的数据类型 7 3.2 C语言中的数据类型语言中的数据类型 一、一、short、long限定整数类型限定整数类型 u示例:示例:short
6、int age; long int counter; long long int population; ushort int、 long int、long long int可分别简写为可分别简写为short, long和和 long long。如:。如:short age; uint数据一般为数据一般为16位或位或32位,位,long数据一般为数据一般为32位位, long long 为为64位。位。 u各个编译程序可以根据硬件情况自由选择各个编译程序可以根据硬件情况自由选择int、short、 long的长度,唯一限制是的长度,唯一限制是short和和int数据至少要有数据至少要有16位,
7、位, 而而long数据至少要有数据至少要有32位;位;short数据长度数据长度int数据长度数据长度 long数据长度数据长度 long long数据长度。数据长度。 8 3.2 C语言中的数据类型语言中的数据类型 三、三、signed、unsigned限定限定char类型和任何整数类型类型和任何整数类型 signed char 、 unsigned char signed short 、 unsigned short signed int 、 unsigned int signed long 、 unsigned long signed long long、 unsigned long l
8、ong 经经unsignedunsigned限定的类型取值范围必须是正的或者为限定的类型取值范围必须是正的或者为0 0。一一 般省略般省略signed,如如signed char通常写成通常写成char。 二二、long可限定可限定double类型类型 long double 9 所以,所以,C语言支持语言支持2种不同的字符类型:种不同的字符类型: signed char、 unsigned char 转换说明符:转换说明符: signed char:c unsigned char: u 取值范围:取值范围: signed char:128127(1字节)字节) unsigned char:0
9、255 (1字节)字节) 3.2 C语言中的两种字符类型语言中的两种字符类型 10 所以,所以,C语言支持语言支持8种不同的整形:种不同的整形: short 、 unsigned short int、 unsigned int long、 unsigned long long long、 unsigned long long 转换说明符:转换说明符: short:hd, unsigned short : hu int : %d, unsigned int : u long :%ld, unsigned long : lu long long:%lld unsigned long long:%l
10、lu 3.2 C语言中的八种整形类型语言中的八种整形类型 11 取值范围和具体硬件有关。在取值范围和具体硬件有关。在short是是16位、位、int和和long是是32 位、位、long long是是64位的机器上位的机器上数值范围数值范围如下:如下: signed short:-3276832767 ( 16位)位) unsigned short: 065535 ( 16位)位) signed int: -2147483648 2147483647 ( 32位)位) unsigned int: 04294967295 ( 32位)位) signed long: -2147483648 214
11、7483647 ( 32位)位) unsigned long:04294967295 ( 32位)位) signed long long: (64位)位) -92233720368547758089223372036854775807 unsigned long long : (64位)位) 0 18446744073709551615 3.2 C语言中的八种整形类型语言中的八种整形类型 12 所以,所以, C语言支持三种不同长度的浮点数据类型:语言支持三种不同长度的浮点数据类型:float、 double和和long double。 其中其中float一般占字节(一般占字节(2位)、提供位有
12、效数字;位)、提供位有效数字; double一般占一般占8字节(字节(64位)、提供位)、提供1516位有效数字;位有效数字; long double 占占12字节(字节(96位)。位)。 转换说明符:转换说明符: float:f double :lf long double: Lf 3.2 C语言中的三种浮点类型语言中的三种浮点类型 13 3.2 C语言中的三种浮点类型语言中的三种浮点类型 取值范围:取值范围: float : double : long double: 14 提纲提纲 3.1 一些常用的转移序列一些常用的转移序列 3.2 再论再论C语言中的数据类型语言中的数据类型 3.3
13、混合运算时各种数据类型之间的转换混合运算时各种数据类型之间的转换 3.4 格式化输出格式化输出 3.5 赋值运算符赋值运算符 3.6 自增和自减运算符自增和自减运算符 3.7 条件运算符和逗号运算符条件运算符和逗号运算符 3.8 算术运算符的优先级和结合性算术运算符的优先级和结合性 15 3.3.1 隐式转换隐式转换 C编译器只知道计算操作数的数据类型相同的表达式。编译器只知道计算操作数的数据类型相同的表达式。 如果一个运算符两侧的操作数的数据类型不同,则系统如果一个运算符两侧的操作数的数据类型不同,则系统 按按“先转换、后运算先转换、后运算”的原则,首先将数据自动转换成的原则,首先将数据自动
14、转换成 同一类型,然后在同一类型数据间进行运算。同一类型,然后在同一类型数据间进行运算。 类型转换分成两种:类型转换分成两种:隐式转换隐式转换和和显式转换显式转换。 隐式转换隐式转换的基本原则是将低类型数据转换成高类型数据的基本原则是将低类型数据转换成高类型数据 (数据类型提升数据类型提升)。)。 各种类型的高低顺序如下:各种类型的高低顺序如下: 16 高高 低低 数据类型数据类型scanf函数的转换说明符函数的转换说明符printf函数的转换说明符函数的转换说明符 long double double float unsigned long long unsigned int int uns
15、igned short short unsigned char char %Lf %lf %f %lu %ld %u %d %hu或或%u %hd %u %c %Lf %lf %f %lu %ld %u %d %hu或或%u %hd %u %c 数据类型提升的顺序数据类型提升的顺序 17 long double float double unsigned long long unsigned int unsigned char、 unsigned short int char、short 转换原则:转换原则: 1 ) 所有所有char及及short int 型变量转为型变量转为 int型,所有
16、型,所有float转换为转换为double。 2) 操作数中操作数中 较低类型数据转换成较较低类型数据转换成较 高类型数据后再进行运算高类型数据后再进行运算。 注意:箭头方向只表示数据类型由注意:箭头方向只表示数据类型由 低向高转换,低向高转换,int型数据和型数据和double 型数据混合运算时,型数据混合运算时, int型直接转型直接转 换为换为double型,而不是转换成型,而不是转换成 unsigned int型,再转换成型,再转换成long型、型、 再转换成再转换成unsigned long int型型 ,最,最 后转换成后转换成double型。型。 18 类型转换实例类型转换实例c
17、har ch=Q; int i=2; float f=12.34; double d=15.4; result = (ch / i) + (f * d) (f + i) ; 19 赋值中的类型转换 在一个赋值语句中,如果赋值运算符左侧变量的在一个赋值语句中,如果赋值运算符左侧变量的 类型和右侧表达式的类型不一致,则赋值时将类型和右侧表达式的类型不一致,则赋值时将 进行自动类型转换,将右侧表达式的值转换成进行自动类型转换,将右侧表达式的值转换成 左侧变量的类型。左侧变量的类型。 int n; char ch; float f; double d; 则执行语句则执行语句“ch=n;”后,整型变量后
18、,整型变量 的高位字节将被切掉;的高位字节将被切掉; 执行语句执行语句“n=f;”后,后,n只接收只接收f的整的整 数部分,相当于取整运算。数部分,相当于取整运算。 20 3.3.2显式转换 utotal/counter的运算结果是整型数;的运算结果是整型数; u为了得到浮点值,使用类型转换运算符,形式为:为了得到浮点值,使用类型转换运算符,形式为: (类型说明符类型说明符)表达式表达式 或者或者 (类型说明符类型说明符)(表达式表达式),用于将表,用于将表 达式的运算结果类型转换为类型说明符指定的数据类型;达式的运算结果类型转换为类型说明符指定的数据类型; u类型转换运算类型转换运算(flo
19、at)建立了操作数建立了操作数total的浮点值拷贝;存储的浮点值拷贝;存储 在在total值的值仍然是一个整型值;思考:下面语句的效果值的值仍然是一个整型值;思考:下面语句的效果 average = (float)(total/counter); u使用类型转换运算符将高类型数据强制转换为低类型数据使用类型转换运算符将高类型数据强制转换为低类型数据 时,会引起精度损失(例如浮点转换成整型)或改变数据时,会引起精度损失(例如浮点转换成整型)或改变数据 的值(例如的值(例如long转换成转换成short)。)。 int total=12,counter=5; float average; ave
20、rage = (float)total/counter; 显式转换显式转换 21 提纲提纲 3.1 一些常用的转移序列一些常用的转移序列 3.2 再论再论C语言中的数据类型语言中的数据类型 3.3 混合运算时各种数据类型之间的转换混合运算时各种数据类型之间的转换 3.4 格式化输出格式化输出 3.5 赋值运算符赋值运算符 3.6 自增和自减运算符自增和自减运算符 3.7 条件运算符和逗号运算符条件运算符和逗号运算符 3.8 算术运算符的优先级和结合性算术运算符的优先级和结合性 详见详见C程序设计教程序设计教 程程 第第9章,自学章,自学 22 1.类型转换字符类型转换字符d以带符号的十进制整数
21、形式输出。以带符号的十进制整数形式输出。 可以指定输出场宽(总位数)和对齐方式(左对齐还是可以指定输出场宽(总位数)和对齐方式(左对齐还是 右对齐)。右对齐)。 %5d:场宽为场宽为5,右对齐,左补空格。,右对齐,左补空格。 %-5d:场宽为场宽为5,左对齐,右补空格。,左对齐,右补空格。 若实际位数超出指定位数,则按实际位数输出若实际位数超出指定位数,则按实际位数输出 假设有变量定义如下:假设有变量定义如下: int num1=123; long num2=123456 需要程序运行结果如下:需要程序运行结果如下: num1=123,num1=123,num1=123,num1=123 nu
22、m2=123456,num2=123456,num2=123456 3.4 格式指示符格式指示符 23 3.4 格式指示符格式指示符 则对应的程序为:则对应的程序为: #include #include main() int num1=123; long num2=123456; printf(num1=%d,num1=%5d,num1=%-5d,num1=%dn, num1,num1,num1,num1); printf(num2=%ld,num2=%8ld,num2=%ldn,num2,num2, num2); system(“pause”); return 0; 24 2. 类型转换字符
23、类型转换字符f以小数形式、按系统以小数形式、按系统 默认的宽度,输出单精度和双精度实数。默认的宽度,输出单精度和双精度实数。 %f:默认方式下输出小数点后默认方式下输出小数点后6位;如:位;如: 123.556000。 %12f :总共占据:总共占据12位(包括小数点),其中保留小数位(包括小数点),其中保留小数 点后面点后面6位。不足位左补零。若实际长度超出指定场宽,位。不足位左补零。若实际长度超出指定场宽, 按实际输出。按实际输出。 %12.2f :总共占据:总共占据12位(包括小数点),其中保留小位(包括小数点),其中保留小 数点后面数点后面2位。不足位左补零,若超出则按实际输出。位。不
24、足位左补零,若超出则按实际输出。 %e:总共占据:总共占据13位。如:位。如: 1.235560e+002,分,分尾数尾数 (1.235560)和)和指数指数(+002)两部分。其中尾数占据)两部分。其中尾数占据8 位位(包括小数点包括小数点),最高位不为,最高位不为0,小数点后面保留,小数点后面保留6位;位; 指数占据指数占据4位,位,1位是符号位。位是符号位。 %12.2e:共占共占12位位(包括小数点和包括小数点和e),其中尾数保留小,其中尾数保留小 数点后数点后2位。位。 指定输出场宽、对齐方式、小数点后位数指定输出场宽、对齐方式、小数点后位数 25 main( ) float f=1
25、23.556; double d1,d2; d1=1111111111111.111111111; d2=2222222222222.222222222; printf(%f, %12f, %12.2f, %-12.2f, %.2fn,f,f,f,f,f); printf(%e,%12e, %12.2e, %-12.2e, %.2en,f,f,f,f,f); printf(d1=%lfn, d1);/输出为输出为d1=1111111111111.111100 printf(d2=%lfn, d2);/输出为输出为d2=2222222222222.222200 printf(d1+d2=%fn,
26、d1+d2); printf(d1+d2=%en,d1+d2); system(pause); 2. 类型转换字符类型转换字符f以小数形式、按系统以小数形式、按系统 默认的宽度,输出单精度和双精度实数。默认的宽度,输出单精度和双精度实数。 26 程序运行结果如下:程序运行结果如下: 123.556000,123.556000,123.56,123.56,123.56 1.235560e+002, 1.235560e+002, 1.24e+002,1.24e+002 ,1.24e+002 d1=1111111111111.111100 d2=2222222222222.222200 d1+d2=
27、3333333333333.333000 d1+d2=3.333333e+012 27 main() char c=A; int i=65; printf(c=%c,%5c,%dn,c,c,c); printf(i=%d,%c,i,i); 程序运行结果如下:程序运行结果如下: c=A,A,65 i=65,A 3. 类型转换字符类型转换字符c输出一个字符输出一个字符 在在C语言中,整数可以用字符形式输出,语言中,整数可以用字符形式输出, 字符数据也可以用整数形式输出。字符数据也可以用整数形式输出。 将整数用字符形式输出时,系统首先求该将整数用字符形式输出时,系统首先求该 数与数与256的余数,然
28、后将余数作为的余数,然后将余数作为ASCII 码,转换成相应的字符输出。假设码,转换成相应的字符输出。假设i的值的值 为为65+256,则用,则用%c输出的是输出的是A 28 提纲提纲 3.1 一些常用的转移序列一些常用的转移序列 3.2 再论再论C语言中的数据类型语言中的数据类型 3.3 混合运算时各种数据类型之间的转换混合运算时各种数据类型之间的转换 3.4 格式化输出格式化输出 3.5 赋值运算符赋值运算符 3.6 自增和自减运算符自增和自减运算符 3.7 条件运算符和逗号运算符条件运算符和逗号运算符 3.8 算术运算符的优先级和结合性算术运算符的优先级和结合性 29 3.5 赋值运算符
29、赋值运算符 = +=+=、-=-=、* *= =、/=/=和和%=%= c c+=+=3 3等价于等价于c c= =c c+ +3 3; i/=(j-1)i/=(j-1)等价于等价于i=i/(j-1);i=i/(j-1); 变量变量= =变量变量 运算符运算符 表达式表达式 可写成:可写成: 变量变量 运算符运算符= =表达式表达式 30 提纲提纲 3.1 一些常用的转移序列一些常用的转移序列 3.2 再论再论C语言中的数据类型语言中的数据类型 3.3 混合运算时各种数据类型之间的转换混合运算时各种数据类型之间的转换 3.4 格式化输出格式化输出 3.5 赋值运算符赋值运算符 3.6 自增和自
30、减运算符自增和自减运算符 3.7 条件运算符和逗号运算符条件运算符和逗号运算符 3.8 算术运算符的优先级和结合性算术运算符的优先级和结合性 31 3.6 自加和自减运算符自加和自减运算符 运算符运算符表达式范例表达式范例功能描述功能描述 + + - - +a a+ -b b- 先将先将a加加1,然后把,然后把a的新值用在出现变量的新值用在出现变量a的表达式中的表达式中 在出现变量在出现变量a的表达式中使用的表达式中使用a的当前值,然后将的当前值,然后将a加加1 先将先将b减减1,然后把,然后把b的新值用在出现变量的新值用在出现变量b的表达式中的表达式中 在出现变量在出现变量b的表达式中使用的
31、表达式中使用b的当前值,然后将的当前值,然后将b减减1 +a:前置自增运算符前置自增运算符 -a:前置自减运算符前置自减运算符 a +:后置自增运算符后置自增运算符 a-:后置自减运算符后置自减运算符 编译带有自加(自减)运算编译带有自加(自减)运算 符的表达式(如符的表达式(如i+i+)比编比编 译等价的展开的表达式(译等价的展开的表达式( i i = i + 1= i + 1)快,因为第一个快,因为第一个 表达式中的表达式中的i i只分析了一次,只分析了一次, 而第二个表达式中的而第二个表达式中的i i被分被分 析了两次。析了两次。 32 3.6 自加和自减运算符自加和自减运算符 如:以下
32、两条语句效果相同如:以下两条语句效果相同 i; i; 设设i当前值为当前值为5,则他以下两条语句效果不同,则他以下两条语句效果不同 if(i+5) /先判断先判断i5,然后,然后i值加值加1 if (+i5) /先将先将i值加值加1,然后判断,然后判断i5 当自增或自减变量值的运算本身就构成了一条语句时,把当自增或自减变量值的运算本身就构成了一条语句时,把 自增或自减运算符放在变量前和放在变量后的效果自增或自减运算符放在变量前和放在变量后的效果 是一样的。是一样的。只有当变量出现在大型表达式的上下文只有当变量出现在大型表达式的上下文 中时,前置和后置自增或自减运算符才有区别。中时,前置和后置自
33、增或自减运算符才有区别。 33 3.6 自加和自减运算符自加和自减运算符 main() int i; i = 5; if(i+ 5) printf(i=%d,i+5 is truen,i); printf(i=%dn,i); i = 5; if(+i 5) printf(i=%d,+i5 is truen,i); printf(i=%dn,i); system(pause); i=6 i=6,+i5 is true i=6 请按任意键继续请按任意键继续 . . . 判断判断i5, 然后然后i值加值加1 i值先加值先加1,然,然 后判断后判断i5 34 3.6 自加和自减运算符自加和自减运算符
34、main() int i; i = 5; if(i+ 4) printf(i=%d,i+4 is truen,i); printf(i=%dn,i); i = 5; if(+i 5) printf(i=%d,+i5 is truen,i); printf(i=%dn,i); system(pause); i=6,i+4 is true i=6 i=6,+i5 is true i=6 请按任意键继续请按任意键继续 . . . 将将5改成改成4 35 3.6 自加和自减运算符自加和自减运算符 测试:测试: y = 2; n = 3; nextnum = (+y + n+)*6; num=y+n;
35、求求nextnum 和和num的值?的值? nextnum值为值为36,num值为值为7 36 u 自增和自减运算符的操作数只能是自增和自减运算符的操作数只能是一个简单的一个简单的 变量名变量名,而不能是常量或者表达式。,而不能是常量或者表达式。5+, +(i+1)都是错误的写法!都是错误的写法! u ANSI没有规定运算符操作数的计算顺序,因没有规定运算符操作数的计算顺序,因 此如果在一条语句中将特定变量自增或自减不此如果在一条语句中将特定变量自增或自减不 止一次时,程序员应该尽量避免使用自增或自止一次时,程序员应该尽量避免使用自增或自 减运算符。如:减运算符。如: (i+)+(i+)+(+
36、i)。 3.6 自加和自减运算符自加和自减运算符 37 提纲提纲 3.1 一些常用的转移序列一些常用的转移序列 3.2 再论再论C语言中的数据类型语言中的数据类型 3.3 混合运算时各种数据类型之间的转换混合运算时各种数据类型之间的转换 3.4 格式化输出格式化输出 3.5 赋值运算符赋值运算符 3.6 自增和自减运算符自增和自减运算符 3.7 条件运算符和逗号运算符条件运算符和逗号运算符 3.8 算术运算符的优先级和结合性算术运算符的优先级和结合性 38 条件运算符条件运算符 ? ? :(C C语言语言唯一的三目运算符唯一的三目运算符) 条件表达式条件表达式 含有条件运算符的表达式含有条件运算符的表达式 执行过程执行过程 先求表达式先求表达式1的值,若值为非的值,若值为非0(为真),(为真), 则计算表达式则计算表达式2的值作为条件表达式的值;若值为的值作为条件表达式的值;若值为 0(为假),则计算表达式(为假),则计算表达式3的值作为条件表达式的值作为条件表达式 的值。的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全书完整的课件
- 偶像的力量课件
- 保健品业内知识培训课件
- 伤寒论中药课件
- GB∕T 35770-2022《 合规管理体系 要求及使用指南》之8:“5领导作用-5.1.1治理机构和最高管理者”专业深度解读和应用指导材料(雷泽佳编写2025D0)
- 2025-2026学年云南省屏边县民族中学高三物理第一学期期末学业质量监测模拟试题
- 四川省宜宾市江安县2021-2022学年九上期末数学试卷(解析版)
- 疫情期间用工管理办法
- 潍坊热线管理办法细则
- 社区档案存档管理办法
- 空间中的“爱情买卖二次元手游”玩家的数字身体与爱欲张力研究
- 小提琴培训行业供需趋势及投资风险研究报告
- 人教版九年级英语全册词性转换1-14单元
- 天耀中华合唱简谱大剧院版
- 铭记抗战历史+弘扬民族精神+纪念抗战胜利主题班会
- 深静脉血栓预防及护理课件
- 心律失常临床诊疗指南
- 《现代服务业》课件
- 大学生毕业论文写作教程全套教学课件
- 肝硬化及其并发症
- 腾讯基干领导力素质模型V4.0-最后版本
评论
0/150
提交评论