第194章 C专家编程(2 / 2)

(如年龄、国债)而用它来表示数量。尽量使用像t那样的有符号类型,这样在涉及升级混合类型的复杂细节时,不必担心边界情况(如1被翻译为非常大的正数)。只有在使用位段和二进制掩码时,才可以用无符号数。应该在表达式中使用强制类型转换,使操作数均为有符号数或者无符号数,这样就不必由编译器来选择结果的类型。”

“许多操作数类型为算术类型的双目运算符会引发转换,并以类似的方式产生结果类型。如果其中一个操作数的类型是unsignedlon,那么另一个操作数也被转换为unsignedlon。其次,如果其中一个操作数的类型是lon,而另一个操作数的类型是unsignedt,如果lon能够完整表示unsignedt的所有值,那么unsignedt类型操作数被转换为lon,如果lon不能完整表示unsignedt的所有值,那么两个操作数都被转换为unsignedlon。再次,如果其中一个草所属的类型是lon,那么另一个操作数被转换为lon。再再次,如果其中一个操作数的类型是unsignedt,那么另一个操作数被转换为unsignedt。”

“……”

“除了递归调用之外,堆栈并非必需。因为在编译时可以知道局部变量、参数和返回地址所需空间的固定大小,并可以将它们分配于rtran的早期编译器并不允许函数的递归调用,所以它们在运行时并不需要动态的堆栈。允许递归调用意味着必须找到一种方法,在同一时刻允许局部变量的多个实例存在,但只有最近被创建的那个才能被访问,这很像栈的经典定义。”

尽管动辄长篇大论,但有一说一,这本书的写作风格还是很舒服的~

基本上书中的内容都是循序渐进的。

而不是和《手把手教你学xxx》《xxx从入门到精通》这类书一般,章节难度布置的毫无规律可言!

章杉很喜欢这本书1118的章节名——《如果我的目标是那里,我不会从这里起步》

按照书中的话“编程语言的主要目标是一个框架,用计算机能够处理的方式表达问题的解决方法,编程语言越是能体现这个原则,就越成功……”

在这句话的指引下,章杉对过往学过的种种编程语言有了些新的见解。

尽管这种认知并不意味着质变,但正是一点点量变的积累才酝酿了质变!