第三章03(4.11)

 

3.3.2 强制类型转换操作符
重点:
1.强制类型转换操作符在什么情况下用?
类型不匹配时,如float f=2.3; f % 2;,其中表达式 f % 2非法。注意与int i; float f = 2.3; i = f;区别,其中i = f;为类型不匹配时的赋值操作。
2.强制类型转换操作符什么样子?(类型)
float f=2.3; (int)f % 2;,其中(int)f就是强制类型转换,其结果为2,整型(操作原则与类型不匹配时赋值操作相同);(int)f % 2的值为0,整型。
3.使用强制类型转换操作符后,变量会发生改变吗?
float f=2.3; (int)f % 2;之后,看语句printf("%f/n",f);的输出,如为2.000000则变量会发生改变,如为2.300000则不会发生任何改变。
对于表达式(float)(5/2),有三个操作符,其中括号的优先级最高,先计算(5/2),结果为2,整型,再进制强制类型转换(float),结果为2.0,float型。
 
3.3.3 自增自减操作符
重点:
1.++i,i++本质上为i = i + 1;的简写形式。
2.两者的区别为:表达式++i的值为加1后的,表达式i++的值为加1前的原值。
int i = 1;
printf("%d/n", i++);
printf("%d/n", i);
printf("%d/n", ++i);
printf("%d/n", i);
的输出结果为:1 2 3 3
2++不能改写为2=2+1,所以非法。
3.4逗号操作符
逗号操作符的优先级最低,逗号表达式多用于将多条C语句连接成一条C语句。如i=0;j=0;可写成一条C语句 i=0,j=0;
3.5值与编译系统相关的表达式
注意:
因为C语言没有详细规定各种情况下表达式的求值顺序, 不同的编译系统对子表达式的求值顺序有着不同的优化原则,所以就会出现一个表达式在不同的编译系统中可能有不同的值的问题。
 如 int j = 3时,函数调用语句printf("%d,%d/n", j, j++);的输出值可能为3,3;也可能为4,3。
关键在于编程时通过改写避免出现类似情况。
 
3.6 典型例题分析

例3-10
程序的作用是将浮点型变量 fa 的值保留到小数点后两位,第三位进行四舍五入,变量 fa 的值由 5.6789 变为 5.68
如果是问题让我们解答时,需解决:1.如何把变量fa多余的位数去掉,2.如何进行四舍五入。
结合程序思考。
例3-11  
输入一个三位的正整数,在屏幕上显示出组成这个数的数字之和。如输入235时显示10(2+3+5)。
程序的架构能搭建起来#include <stdio.h> void main() { int n; scanf("%d", &n); ......}
对于三位的正整数n,如何求个位、十位、百位上的数字?
注意:
1.例题是如何组织输出的?2.n/100+n/10%10+n%10就可求出和。
 
例3-12 交换两字符变量的值。
认真分析两个程序的执行过程。
例3-13求一元二次方程的根
注意
1.复杂表达式的写法。2.数学库函数的头文件 3.double型输入时必须用格式字符串"%lf"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值