《C语言解惑》批注
在此记录一些迷惑性较强的谜题。
第一章 操作符
1.1.3
* % / 同级,从左到右关联。
1.3.4
1.3.5
第二章 基本类型
2.1.2
顺序未定义。
注意补码。
取决于特定的实现怎样在位移时处理符号位。
2.2.4
一元运算符的优先级很高。
2.2.5
int16上溢。
C语言中,即使运算发生了溢出,其结果仍旧是一个可预料的、合法的值。 但是真正的结果已经丢失了。
第四章 控制流
注意概念
循环条件
退出条件
初始值
修改效果
第五章 编程风格
关于编程风格(也就是哪些结构应该避免,哪些结构应该效仿)的书籍实在不少, 从一个似乎是不同的角度得出的一个大概的结论是, 所谓良好的编程风格在很本程度上属子一种个人品位。
但从比较客观合理的角度看, 编程风格的好坏在于程序员是否具有良好的判断力——就像许多其他事情一样。
在笔者看来,虽然评价编程风格是否优良的标准有很多, 但放之四海而皆准的编程风格规则并不多。
根据以上的观点可认为,下面这些谜题说明了一些常见的不良的编程风格。
这些谜题的解答与其说是标准答案,不如说是一种更好的选择。
在笔者看来,如果有什么是优良编程风格的关键的话, 那就是必须让你编写出来的程序适合其他人阅读,而这又具体表现在两个方面:
5.1.1
continue语句通常可以通过改变测试条件来实现, 而这种改变有时会显著改善程序代码的可读性。
5.1.3
有经验的程序员都知道多层嵌套的if语句最容易出问题:
在到达最内层的条件时,外层的条件已经被忘记或模糊不清了。
解决这个问题的办法是从一开始就把每个条件都完整地写清楚,
但是往往会导致1条件表达式即冗长又不容易看懂。
在遇到这种情况的时候,良好的判断力是重要的!
5.2.1
可以改写为
5.2.2
在C语言里,一种想法往往会有多种表达方式,而程序员的任务就是把各有关细节组织成一些条理清晰的语句块。
C语言提供了以下元素来帮助程序员组织各有关细节:
把最基本的想法写成表达式
把表达式足之处语句
把语句组织为语句块和函数