《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 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

JavaSE(八)之Map总结

上一篇是总结了Collection接口的各种实现类,这一篇我将分享的是Map的总结,希望大家点评! 一、Map接口 1.1、为什么Collection不能满足集...

18810
来自专栏流媒体

C++多态

当类存在虚函数时,编译器会为该类维护一个表,这个表就是虚函数表(vtbl),里面存放了该类虚函数的函数指针。在构造类的时候增加一个虚表指针(vptr)指向对应的...

923
来自专栏Spring相关

带返回值的函数,闭包,沙箱,递归详解

那了解了函数 this 指向的不同场景之后,我们知道有些情况下我们为了使用某种特定环境的 this 引用, 这时候时候我们就需要采用一些特殊手段来处理了,例如...

272
来自专栏用户画像

静态代码块、构造代码块以及构造函数的加载顺序

首先,静态代码块,构造代码块,和构造函数都存在于一个类中,只不过,他们执行的先后顺序和执行的次数不同。

782
来自专栏GreenLeaves

JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象

一、仔细分析前面的原型模式创建对象的方法,发现原型模式创建对象,也存在一些问题,如下: 1、它省略了为构造函数传递初始化参数这个环节,结果所有实例在默认的情况下...

1976
来自专栏老马说编程

(17) 继承实现的基本原理 / 计算机程序的思维逻辑

第15节我们介绍了继承和多态的基本概念,而上节我们进一步介绍了继承的一些细节,本节我们通过一个例子,来介绍继承实现的基本原理。需要说明的是,本节主要从概念上来介...

1866
来自专栏程序员互动联盟

【java基础】匿名类

昨天后台的一个小伙伴提到了,java里面的匿名类,这个概念在平常java码代码的时候用的特别多,所以找了一篇介绍表述比较清晰的文章分享给大家,能极大的简化代码量...

3477
来自专栏cnblogs

[我的理解]Javascript的原型与原型链

一、原型与原型链的定义 原型:为其他对象提供共享属性的对象     注:当构造器创建一个对象,为了解决对象的属性引用,该对象会隐式引用构造器的"prototyp...

18410
来自专栏Android机动车

转向Kotlin——对象

在Java中又匿名类的概念,也就是说,在创建类的时候,无需指定类的名字。匿名类一般用于方法参数。基本理念就是方法需要接收一个类或者接口的实例,而这个实例只是在该...

683
来自专栏数据结构与算法

10:大整数加法

10:大整数加法 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 求两个不超过200位的非负整数的和。 输入有两行,每...

34212

扫码关注云+社区