说在前面:是一个C语言新手,很新的新手,在这个专栏中记录一些学习心得和笔记。
最近做了《C程序设计习题与解析》的第二章“数据类型和表达式”,结合笔记总结出了一些易错点和注意事项,如下:
一.关于“常量”
1.关注进制,尤其是八进制容易忽视,如0123指八进制下的123,容易误判成十进制下的123
2.关注每一个位上的数是否在可取范围之内,如八进制中不能出现8、9、f等,0668就是一个不合法的表达。特殊:0开头的八进制与 \ 转义出的八进制容易忽视可取范围
3.关注是否为转义字符,如char a=‘\70’中,单引号内看起来有三个符号,不能赋值给字符型a,实际上表示八进制下的70,只有一个符号,该表达式是合法的
4.数据类型为浮点数时,如果数据的值为整数,应加上小数点,如4应写成4.0
5在二进制表达中,右起为第0位而不是第一位。如保留第1和第7位时应保留从流变开始数的第二个和第八个数字
6.整形数据在计算机中的存储形式为补码,尤其对于负数要注意转换
7.char a=2与char a='2'的区别
8.字符串常量所占内存为字符串中的字符个数+1:字符串结尾会自动补一个'\0'作为终止符
二:关于“标识符”
1.注意不能是保留字(关键字),如“do”就是一个非法标识符
2.开头只能是字母或下划线。不能为数字
3.标识符中只能包含数字、字母、下划线
三:关于“表达式”
1.将与变量数据类型不同的数据赋值给变量时,发生隐式类型转换,容易在后期导致错误,但该表达式为合法表达式
2.取余运算符%的运算对象必须为整数
3.两个整数相除时结果为整数,如1\3的计算结果为0
4.赋值运算符、复合赋值运算符的优先级最低
5.&&与||中第二个运算对象不一定运算
6.关注运算符的优先级顺序,部分运算符优先级如下:
四则运算>左移右移>关系运算符>其余位运算符>逻辑与,逻辑或>条件运算符>赋值运算符
7.由逻辑运算符和数据组成的表达式计算结果为0或1,可以作为一个整体参与运算。如(3>2)+1的运算结果为2
8判断两数相等用“==”,不是“=”
9.需要对浮点数进行相等判断时,应判断相对大小
10.关系运算符不连续比较