浮点
%e是输出科学计数法
下图为科学计数法
在%和f之间加上.n可以指定保留小数点后几位,这样的输出是做4舍5入的
如:printf("%.3fn",-0.0049)保留三位小数。
浮点运算的精度
带小数点的字面量是double而非float
所以float需要用f或F后缀来表明身份,即a=1.234f
fl== f2可能失败
可以两数相减然后让绝对值小于一个数,即fabs(fl-f2)< 数
选择浮点类型:没有特殊需要就用double
逃逸字符
- \b:回退一格(不一定是删除)
- \t:到下一个表格位(即Tab键)
- \n:换行
- \r:回车
自动类型转换
- 当运算符的两边出现不一致的类型时,会自动转换成较大的类型,大的意思是能表达的数的范围更大。
- char —-> short-> int —> long —> long long
- int —> float —> double
- 对于printf,任何小于int的类型会被转换成int,float会被转换成double
- 但是scanf不会,如:要输入short,需要%hd
强制类型转换
要把一个量强制转换成另一个类型(通常是较小的类型),需要:(类型)值
- 比如:(int)10.2, (short)32
- 要注意,小的变量不一定总表达大的量
- 只是从那个变量计算出了一个新的类型的值,它并不改变那个变量,无论是值还是类型都不改变
- 强制类型转换的优先级高于四则运算
布尔类型 - 输入:#include <stdbool.h>,之后就可以使用bool和true、false
逻辑运算
- 逻辑运算的结果只有0或1
- 想要表达x∈(2,3),不能2<x<3,而要写成x>2&&x<3(因为x<4是一个逻辑量)
- 优先级比较
-
短路:
逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会做右边的计算
- 对于&&,左边是false时就不做右边了
- 对于||,左边是true时就不做右边了
所以,不要把赋值,复合赋值等组合进表达式
条件运算符
优先级高于赋值运算符,低于其他运算符
如:count = (count > 20) ? (cout < 50) ? count -l0 : count - 5 : (count < l0 ) ? count + l0 :count + 5;
逗号运算符
逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先级是所有的运算符中最低的,所以它两边的表达式会先计算;逗号的组合关系是自左向右,所以左边的表达式会先计算,而右边的表达式的值就留下来作为逗号运算的结果。
主要在for中使用,可以在多个计算式中用逗号隔开,如