Press "Enter" to skip to content

Tag: C语言

C语言运算符另类分类法

一般的C语言程序设计文本对C运算符的分类大概都是分为五大类:算术运算符、 关系运算符、逻辑运算符、按位运算符和一些特殊任务的运算符。这种分类法表面上“合情合理”,事实相当的笼统含混。算术运算符好理解,什么叫关系运算符,关系可运算么?关系是什么数据值参与运算? 不甘于这种含混的分类法,这几天花了一点时间对C语言的全部运算符进行分拣,分别从设计、语义和哲学等多个角度对C运算符进行分析,并且归纳出以下五类:

  1. 计算指令
  2. 判断指令
  3. 保存指令
  4. 对象元操作指令
  5. 自定义指令

伪代码

伪代码是英语与代码的混合物,理解伪代码不难,但是编写伪代码则很具有挑战性。伪代码平衡了英语 (自然语言)的易理解性和非形式所带来的模糊性与代码的精确性之的矛盾。如果我们使用英语(自然语言)编写算法,那么算法描述可能太过高层而很难对算法进 行分析并转化成实际代码;如果我们用代码编写算法,我们得花大量的时间在一些我们可能最终不会实现的代码细节上(缘于我们一般在实现算法之前看对算法逻辑 进行分析)。

系统级编程是什么?

System Programming

过去的Unix编程是没有系统不系统之分的。即便是开发 X Window也是在系统级(system-level)编程,看到系统的所有API。现代的操作系统编程有所谓[系统级编程],使用与[应用编程]不同的API(System programming API) 。

从编程的形式和耗费心力上,系统编程与应用编程没有本质区别,这也意味着一个经验丰富的应用程序员转向系统编程难度不大。系统编程与应用编程的不同在于:

  • 第一,系统编程更接近硬件;系统程序员必须熟悉硬件环境和操作系统环境;相对的,应用程序员更多是熟悉应用的环境;
  • 第二,系统编程使用的函数库和库函数调用方法与应用编程有一些不同。比如,在调用系统调用(syscall)时使用所谓的陷入方式,也就是软中断方式。

近年来,随计算应用深化,应用编程有远离系统编程的趋向。不过,这并不能说或者预言系统编程的末日的到来。因为,有人用Javascript或C#写应用就要有人写它的解释器和运行时。

此外,操作系统代码只能使用系统级编程。

C语言函数调用过程

一个(过程或函数)调用顺序就是调用一个过程并从该过程返回的指令的约定顺序。由于一个程序是很多的函数的调用来实现的,所以编译器应该使这个调用的顺序尽可能的经济划算。函数调用顺序受语言语义、寄存器的规划、寻址模式、指令集和目标机器的固有约定等多方面的影响。函数调用顺序还与局部变量的内存分配方式有着紧密的联系。