本文是自己读书的时候一些关于该书的重点及感悟
目录
1、注释符号
(1)C 语言里可以有两种注释方式:/* */ 和//,编译器在编译程序时的确会将注释剔除,但不是简单的剔除,而是用空格代替原来的注释。
(2)/*…*/这种形式的注释不能嵌套,如:/*这是/*非法的*/*/ 因为/*总是与离它最近的*/匹配。
(3)只要斜杠(/)和星号(*)之间没有空格,都会被当作注释的开始。这一点一定要注意,要把*号作为指针使用时一定要在/后面加空格。
(4)要边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要及时删除。
(5)对于全局数据(全局变量、常量定义等)必须要加注释。
(6)注释代码段时应注重“为何做(why)”,而不是“怎么做(how)”。
2、接续符和转义符
(1)反斜杠作为接续符时,之后不能有空格,反斜杠的下一行之前也不能有空格。(实测后发现反斜杠的下一行之前后空格,也可以编译通过,比较奇怪,不知道是不是和编译软件有关系)
3、单引号和双引号
(1)字符在内存里是以 ASCAII 码存储的,所以字符常量可以与整形常量或变量进行运算。
4、逻辑运算符
(1)逻辑运算符||两边的条件只要有一个为真,其结果就为真;只要有一个结果为假,其结果就为假。if((++i>0)||(++j>0))语句中,先计算(++i>0),发现其结果为真,后面的(++j>0)便不再计算。
(这块书中的书写有误,只要有一个结果为假,其结果不一定为假,因为后一个条件可能为真,后一个条件为真的话,整个判断结果为真)
5、位运算符
(1)其中按位异或操作可以实现不用第三个临时变量交换两个变量的值:a ^= b; b ^= a;a ^= b;但并不推荐这么做,因为这样的代码读起来很费劲。
(2)对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补 0;而为负数时,符号位为 1,最高位是补 0 或是补 1 取决于编译系统的规定。Turbo C 和很多系统规定为补 1。
(3)左移和右移的位数不能大于数据长度,不能小于0,不然数据会发生溢出
6、花括号
(1)简单来说花括号的作用就是打包。用花括号是为了把一些语句或代码打个包包起来,使之形成一个整体,并与外界绝缘。
7、++ --操作符
(1)C 语言有这样一个规则:每一个符号应该包含尽可能多的字符。也就是说,编译器将程
序分解成符号的方法是,从左到右一个一个字符地读入,如果该字符可能组成一个符号,
那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组
成部分;
8、c语言除法
(1)C 语言或者其他语言在实现整数除法截断运算时,要求余数与被除数的正负号相同。
9、符号优先级
(1).的优先级高于* ,->操作符用于消除这个问题
(2)[]高于*
(3)函数()高于*
(4)== 和!=高于位操作
(5)== 和!=高于赋值符
(6)算术运算符高于位移运算符
(7)逗号运算符在所有运算符中优先级最低