如果一段代码总是需要程序员求助与参考手册才能读懂的话,那它要么是编写的不够好,要么是需要增加一些注释来提供缺少的细节。
在复杂的表达式里,使用括号有助于读者搞清楚操作符与操作符之间的关联关系。
在C程序里,以“#”开头的代码行都是一条预处理器语句。预处理器的工作之一是把一个记号字符串替换为另一个。
在遇到带参数的宏时,C语言预处理器将分两步进行替换:先把宏定义里的形式参数替换为实际参数,再把宏调用替换为宏定义体。
为避免产生二义性,如果一个字符串能够解释为多个操作符,C语言编译器将按照“构成操作字符个数越多越好”的原则来作出选择。
如果你无法断定会不会产生副作用,那么就尽量不要写这样的表达式。
在形式参数的前面加上一个“#”字符作为前缀,将使实际参数被括在一对双引号里。
C语言本身不保证移位操作的结果在数学意义上肯定是正确的。
按照C语言有关规则,在按从左到右的顺序对一个逻辑表达式求值的时候,只要知道了它的实际结果,就不再会其余部分求值。
在C语言的某些实现中,带符号整数的右移操作会把符号位复制到因为移位而空出来的最高位,操作结果的符号位不会发生变化。但这取决于所使用的C语言编译器。
绝大多数C语言版本都允许算术运算的结果发生上溢出或下溢出而不报警。即使运算发生了溢出,其结果仍将是一个合法的数值,它不会是一个无法预料的数值。
对数值进行处理并非C语言的强项。如果你想知道算术运算结果有没有超出相应的取值范围,最好的办法是在运算过程中的关键环节明确地对有关变量的值进行检查。
在进行算术运算的时候,最好避免混合使用不同类型的操作数。如果必须那样做,就应该小心地使用类型转换操作符对有管的操作数明确地进行类型转换。
文章评论(0条评论)
登录后参与讨论