《C陷阱与缺陷》读书笔记

  1. 在C语言中,符号中间的空白(包括空格符,制表符和换行符)将被忽略。

  2. 贪心法:C语言中,每一个符号应该包含尽可能多的字符。

  3. 如果一个整形常量的第一个字符为0,那么该常量将被视为八进制数。

  4. 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器所采用的字符集中的序列值;而用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被双引号中的字符以及一个额外的二进制为0的字符'\0'初始化。

  5. !=的优先级比&高,加法运算符优先级比移位运算符高。

  6. 优先级表:


  7. 优先级助记:

    1. 优先级最高的并不是真正意义上的运算符,包括数组下标,函数调用操作符,结构成员选择操作符。他们都是自左至右结合。

    2. 单目运算符的优先级仅次于前者,在所有真正意义上的运算符中,他们的优先级最高。类型转换也是单目运算符。他们自右至左结合。接下来是双目运算符,其中,算术运算符优先级最高,移位运算符次之,关系运算符再次之,接着是逻辑运算符,赋值运算符,最后是条件运算符。

    3. 我们需要记住的最重要两点是:

      1. 任何一个逻辑运算符的优先级低于任何一个关系运算符。

      2. 移位运算符优先级比算术运算符低,但比关系运算符高。

  8. 任何两个逻辑运算符都具有不同的优先级,所有按位运算符优先级要比顺序运算符高,每个“与”运算符要比相应的“或”高,二按位异或介于按位与和按位或之间。

  9. 注意不要在if或while语句后面写一个分号,如果要写,请用大括号括起来。实际上,这也是我们提倡的一种编程风格。

  10. C语言要求,在函数调用时即使函数不带参数,也应包括参数列表。因此,如果f是一个函数,f()时一个函数调用语句,而f是一个什么也不做的语句,更精确的说,它计算函数f的地址,却并不调用该函数。

  11. 悬挂else问题的解决方法:else总是与同一括号内最近的未匹配的if结合。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值