总结用于复习C语言,主要是根据浙大翁恺老师的慕课总结的
数据类型:
1、整数:
char、short、int、long、long long
2、浮点数:
float、double、long double
3、逻辑:
bool
4、指针
5、自定义类型
前面四种是基础类型
大小:
可以通过 sizeof() 来判断(sizeof() 不会对括号中的表达式进行计算,sizeof是静态运算符,结果在编译时就决定了)
下面是在我的机器上运行检查各种数据类型大小的结果:
sizeof(char)=1
sizeof(int)=4
sizeof(short)=2
sizeof(long)=8
sizeof(float)=4
sizeof(double)=8
sizeof(long double)=16
整型讲解:
计算机内部整型主要是补码运算
一般情况 int 表达的就是机器寄存器的字长
类型选择:现代计算机,若没有特殊要求整型就选int
浮点数讲解:
要点:
1、并不是所有的浮点数都可以计算机被表示出来
所以两个浮点数直接判断相等是可能失败的:
f1 == f2 可能失败
应该使用差来判断两个浮点数是否相等:
fabs(f1-f2)<1e-8
2、格式化输出浮点数:
%.3f,保留小数点后3位(会四舍五入)
%e,科学计数法输出
3、浮点数的选择:没有特殊需要就选double
字符类型讲解
要点:
1、char 也是一种整数,所以两个字符也可以相减,比如:'Z'-'A'得到25(码距)
2、输入输出字符用 %c,也可以以%d输出,对应以ASCII码表
3、转义字符
类型转换:
自动类型转换:
当运算符两边出现不一致类型时,自动转换成较大的类型
char -> short -> int -> long -> long long
int -> float -> double
printf ,任何小于int的类型会转成int;float会转成double
scanf不会,要输入short,需要%hd
强制类型转换:
格式:(类型)值
如:(int)10.2
注意,可能会转换后数值可能会改变成你不认识的,如int32768转成char是0;而转成short会变成 -32768
他做的只是截取,然后辨认输出,不会改变那个量
逻辑类型讲解:
要点:
1、要 #include <stdbool.h> 引入这个头文件之后,就可以使用bool和true、false
2、C语言的bool类型实际上也是一个整型,没有一种特殊的格式化让printf输出true或false比如:
bool b = 6>5;
printf("%d\n",b); //输出1
b = 2; //编译可以通过
运算符:
逻辑运算:
!:逻辑非
&&:逻辑与
||:逻辑或
例子:
c>='A'&&c<='Z' //判断c是否是大写字母
优先级:
!> && > ||
注意点:
&&和||有短路的特性,这个有利于程序快速判断出结果,但是如果后面的表达式含有赋值操作,那么这个操作也不会做了
如:a == 6 && a++==7
如果前面a==6为假,后面不会执行,a也不会+1,所以不要吧赋值组合进逻辑表达式
条件运算符: ... ? ... : ...
例: m<n ? x : a+5 //如果m<n为真,表达式值为x,否则值为a+5
注意点:不要使用嵌套的条件表达式,否则程序可读性太差
逗号运算符:连接两个表达式,用右边的表达式的值作为整个表达式的值
表达式1 , 表达式2
计算过程是:先算表达式1,再算2,整个表达式的值是2的值
没有特别多的用处主要是用在for语句中
要注意:C中逗号运算符的优先级最低