2017年10月17日,我们进行了第一次测验,测验范围是指针之前的基础知识。在本次测验中我的成绩十分的不理想,这让我严重的意识到自己学习的问题,每次上课都感觉自己听懂了,都会了,课后就一点也不看,可是测验成绩告诉我这样做完全是在自欺欺人。在本次测验中,我错的最多的题是关于运算符的题,判断语句真假的题和宏的定义。下面是我对于测验错题的相关知识点的总结:
1.‘&&’逻辑与,两个表达式都为真,才为真。如果表达式1为假,表达式2不计算。
2.‘||’逻辑或,两个表达式只要有一个为真,便为真。如果表达式1为真,表达式2不计算。
3.位运算符,针对二进制,只能用整型数字:
(1)‘~’按位取反,0->1,1->0.例:13: 0000 1101 ~13: 1111 0010
(2)‘&’按位与,相同位都为1才为1,其他为0;
例:14:0000 1110 13&14: 0000 1100
(3)‘|’按位或,相同位只要有一个1就都为1.
例: 13|14: 0000 1111
(4)‘^’按位异或,相同位不一样才为1,其他为0
例: 13^14: 0000 0011
(5)‘<<’按位左移,右边补零
例: 13<<1 -> 0001 1010 14<<2 -> 0011 1000
(6)‘>>’按位右移,左边补符号位
例: 13>>1 -> 0000 0110 14>>2 -> 0000 0011
4.前置++(--):++(--)i,先自增(自减)1,再赋值
例:int a = 1; int b = ++a; int c = --a -> b = 2 , c = 0
5.后置++(--):i++(--),先赋值,再自增(自减)1
例:int a = 3; int b = a++; -> a = 2, b = 3
int c = 2; int d = c--; -> c = 1,d = 2
6. 0为假,非0为真 ! :非,不是
例:if(M) return ‘Y’;else return‘N’:如果M为真,返回Y否则返回N。等价于 return (M == 0)?‘N’:‘Y’假如M=2,M为真,不等于0,返回‘Y’
7.宏:定义宏,宏就是字符替换,一改全改,宏名建议大写
例:#define M(x,y,z) x*y+z
void main()
{
int a = 1,b = 2,c = 3;
printf(“%d\n”,M(a+b,b+c,c+a));
} // 12
计算:x = a+b y = b+c z = c+a
x*y+z = a+b*b+c+c+a = 12 注:没有括号
8. while循环语句的循环体至少执行0次,do-while循环语句的循环体至少可以执行1次。continue和break语句可以出现在各种循环体中。
9. break不能出现在if语句中
10. switch语句不允许出现浮点型,字符串,但是字符可以。switch语句如果没有遇到break 就继续向下执行,知道语句结束。