《The C Puzzle Book》读书笔记

2008-10-10

  1. 赋值表达式的值是=右边的计算结果。如(x=3*2)=6.
  2. 实际编程中不要随便玩puzzle。
  3. 赋值操作符的优先级低于算术运算。如x=3+2和x=(3+2)等价。
  4. &&优于||.
  5. 宏定义是替换型的。
  6. z=x/++x是容易产生副作用的代码,由编译器决定被除数值的情况。C程序的副作用几乎都与变量的值无法预料有关。
  7. 如果一个字符串能解释成多个操作符,编译器将按照“构成操作符的字符个数越多越好”的原则来作出选择。
  8. 形参前面加上一个#字符做前缀,使得实参被括在一对引号里。C预处理器将会自动将相邻的字符串合并。如,printf(#int"=%d",int),可为printf("int""=%d",3),可为printf("int=%d",3)。
  9. 复杂的puzzle可先进行优先级的绑定,加上括号,由里至外进行计算。
  10. 数值处理非C之强项,因其无法捕获算术也算错误。C中,数值数据类型的取值范围是有编译器决定的,程序员无法在C程序中对此作出调整。
  11. 进行算术运算的时候,最好避免使用不同类型的操作数,如必用,小心为妙。
  12. 头文件使用时,预处理器会把头文件的声明替换为头文件的内容,从而生效。
  13. else会被归入最接近它的if语句,如,if(y<0) if(y>0) x=3;else x=5;等价于if(y<0){ if(y>0) x=3;else x=5;}.应当先将不熟悉的模式转化成熟悉的模式,再行处理。
  14. sum+=y在循环中,只是求解y各变值的和,变体可为x+=++y.
  15. 注意循环体中执行的结果,如while(y<10){x=y++;z=++y},y值并不是“连续”被while条件判断的,因里面有两个++.

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

printf()详解之终极无惑

printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。

2063
来自专栏一个会写诗的程序员的博客

h5中performance.timing轻松获取网页各个数据 如dom加载时间 渲染时长 加载完触发时间

在控制台中输入window.performance.timing(html5的属性);

2021
来自专栏听雨堂

【6】页面数据和控件的自动交换机制

阅读目录 数据维护通用流程 数据的加载 数据的修改 数据的添加 自动交换机制 使用PageX来完成数据的自动加载 非标准数据的处理 只要...

2038
来自专栏攻城狮的动态

iOS面试题梳理(一)

4086
来自专栏zhisheng

#每日一题#2

由于昨天文章原创原因,所以没发出来,大部分同学没看这篇啊。于是在一次发出来,希望大家可以认真的思考,这些题目都是互联网大公司笔试的题目,很有参考性!大家不要浪费...

3549
来自专栏步履前行

Java Validation Api

在我们应用程序的业务逻辑中,经常会碰到参数教研的情况,比如在Controller中,我们的参数是一个Entity的时候,经常要判断这个Entity的字段是否是...

3035
来自专栏子勰随笔

基于Instrumentation框架的自动化测试 - Android自动化测试系列(四)

21010
来自专栏北京马哥教育

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

DK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hp...

3115
来自专栏james大数据架构

.net页面生命周期

.net页面生命周期 (1)Page_Init();---初始化对象 这一过程主要是初始化包括页面本身的所有控件,每次的页面载入就会执行一次初试过程,而在这里面...

1837
来自专栏IT技术精选文摘

Nginx之如何编写Handler模块

Handler模块简介 基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-balancer。Handler模块就是...

2149

扫码关注云+社区