浮点数
在选择 int(整型)类型后,如果遇到除法就会出现数据运行结果错误的情况。例如:计算10/3,结果应该是3.33...,int 类型下运行结果则为整数3;17/3结果应该为5.6...,运行结果则为5。也就是说,无论得到的小数是多少是,结果都是小数部分被删除(不会四舍五入)。
那我们该怎么计算结果为小数的程序呢?我们有两种方法,下面先引入浮点数的概念(带小数的数)
浮点数:带小数点的数值。浮点这个词的本意就是指小数点的浮动,是计算机内部表达非整数(包含分数和无理数)的一种方式,不过在C语言中我们不会遇到定点数。人们借用浮点这个词来表达所有的带小数点的数。
1.不改变主函数类型,无需改变主函数类型(仍然使用 int ),我们只需将 %d 改为 %f 这样再运行就可得小数了。注意:用%f 后需要把要计算的数字变为浮点数,例如: 我们计算10/3 就要写成 10.0/3 下面是两种写法的运行结果(实践得结论)
2.改变 变量 类型 ,将 int 改为 double。这样就不再需要把 10 写成 10.0 而是直接 10 就可正确得出结果(对应 1 中例子)。注意:使用double类型时,在 scanf 中我们不能再用 %f 改为 %lf 即scanf(“%lf”)。printf中还是使用 %f
运算符的优先级
1.正号(单目不变)(+)负号(单目取负)(-) 为第一优先级,结合关系**自右向左**(例如:a*-b 就是先取b的负数然后a再与之相乘)
2.乘(*)除(/)取余(%) 为第二优先级,结合关系**自左向右**(例如:a*a/b 就是a先与a相乘后再除以b 这是计算机的计算方式)
3.加(+)减(-) 为第三优先级,结合关系**自左向右**。
4.赋值(=)为第四优先级,结合关系**自右向左** (例如:a=b+5 就是b与5相加后的值赋给a)
变量的交换
当我们想把a的值和b的值交换时,我们不能简单地写a=b,b=a 程序是按步骤执行的,而不是表达一种关系。解决这个问题需要我们找一个中间量,引入中间量c,c=a,a=b,b=c就完成了。
复合赋值和递增递减
五个运算符 + - & / % 可以和赋值运算符 “=” 结合起来,形成复合赋值运算符:“+=” , "-=" , "*=" ,
“/=” , “%=”
例如:a += 5;含义是 a = a + 5; 需要注意的是这里的复合赋值符号是由两个运算赋组合而成但是这两个运算符中间不能加空格,加空格后则不再表示复合赋值符号本意。
a *=b+5实际是a=a乘于(b+5)而不是a=a乘于b再加5
递增递减运算符 “++”和“–”是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1。a++意思就是a += 1,也就是a= a+1
另外,a++ 和 ++a 叫做前缀形式,后缀形式。a++的值是a加1之前的值,而++a的值是加了1以后的值,无论哪个,a的值都加了1了。
这里它们两个的区别仔细思考还是很好理解的。