听故事学语言 · 第十三章 函数声明与作用域
一、公案开庭
上一章末尾留了一桩案子。函数为什么要写在 main 的上面,编译器从上往下读你的代码,读到调用处的时候,它必须已经认识这位新朋友。当时说这里面还有一层公案,本章开审。现在开庭。
先让案子自己暴露。写两个函数,一个判奇数,一个判偶数,它们互相调用,isOdd 说自己是奇数除非对方说自己是偶数,isEven 说自己是偶数除非对方说自己是奇数。这对定义在数学上无懈可击,在 C 语言里却撞了墙。
【例1】死锁解围
#include<stdio.h>/* 死锁版:isOdd 喊 isEven,isEven 又回头喊 isOdd */intisOdd(intn