东北大学秦皇岛分校编译原理课件第一章2015.pptVIP

  • 6
  • 0
  • 约1.21万字
  • 约 76页
  • 2017-06-20 发布于四川
  • 举报

东北大学秦皇岛分校编译原理课件第一章2015.ppt

编译原理 课时:授课课时48+实验课时8 课程性质:必修/考试 考试方式:闭卷考试 主讲:敬茂华 jing_jmh@ 先修课程:离散数学、组成原理、汇编语言、数据结构、C++或其他程序设计语言 第0章 预备知识 本门课程的目的和意义 程序设计语言与程序的翻译 程序设计语言的语法描述 为什么要学习编译原理? 例 int fact() { static int i=5; if(i=0){ return(i); } else{ i=i-1; return((i+abs(1))*fact()); /*第9行,函数abs( ):求绝对值.*/ } } main() { printf(“factor of 5=%d/n”,fact()); } 上程序的运行结果是120。但是,如果把第9行的abs(1)改成1的话,该程序结果是1。 分析 i 是静态变量,所有地方对 i 的操作都是对同一地址空间的操作,所以每次递归进入fact函数后,上一层对 i 的赋值仍然有效。由于C语言的编译机制,每次调用时,(i+abs(1))*fact()中(i+abs(1))的值都先于fact算出。所以,第1次递归时,所求值为5*fact,第2次递归时,所求值为4*fact,第3次递归时,所求值为3*fact,第4次递归时,所求值为2*fact,第5次递归时,所求值为1*fa

文档评论(0)

1亿VIP精品文档

相关文档