• 如何才能解释helloworld这段代码呢?一行一行解释可能解释不清楚,我们不防先了解一下C语言中的顺序结构。

顺序结构

  • 何为顺序结构?我们再拿名叫电脑的士兵的例子来说。我们回顾一下我们对电脑下的命令:
    • 你:『电脑!』
    • 电脑:『到!』
    • 你:『伸出右手,抬出左腿!』----------------------①
    • 电脑:『是!』
    • 你:『伸出左手,缩回右手,放下左腿,抬出右腿!』----②
    • 电脑:『是!』
    • 你:『立正!』-----------------------------------③
    • 电脑:『是!』
  • 我们可以发现我们对『他』一共施了三条命令①②③。而这三条命令是按照顺序执行的。
  • 2015-04-25/553b4e94b72d3
  • 这就是顺序结构,回头看看我们刚才的代码。
#include <stdio.h> --------------------①
int main(void){ -----------------------
    printf("helloworld"); -------------  
    return 0; -------------------------
}
  • 一共有四条命令。它们同样也是顺序执行的。
  • 我们来设想一下,我们如何给计算机下命令才能让它输出helloworld呢?
  • 直接在代码中给大家解释:
#include <stdio.h>       //教会电脑输出字符到屏幕上 
int main(void){          //听好了,电脑!下面我将下命令!    
    printf("helloworld");//给我在屏幕上输出helloworld     
    return 0;            //我的命令下完了。
}

命令①:#include <stdio.h>

  • 教会电脑输出字符到屏幕上
  • 我们如何理解这个命令的意思呢?名叫电脑的士兵再次登场。我们再来回顾一下直接给电脑下命令让它走上台阶的命令。
    • 你:『电脑!』
    • 电脑:『到!』
    • 你:『走上台阶!』
    • 电脑:『不会!』
  • 『他』并不会走路,所以我们才要特别细致的一步一步教会他如何走路。那如果我们派一位教官来教会他走路呢?
    • 你:『教官!』
    • 教官:『到!』
    • 你:『教会电脑走路!』
    • 教官:『是!』
    • 教官:『电脑,记住了,走路的时候先迈左腿,再迈右腿,双手保持身体平衡,身体前倾!』
    • 电脑:『记住了!』
    • 你:『电脑!走上台阶』
    • 电脑:『是!』
  • 在教官的教导下,『他』学会了如何走路,然后我们再下命令,『他』当然会执行。
  • 我们回到刚才C语言中,把#include <stdio.h>删掉看看会出现什么情况。
  • 代码:
//此行代码被删除
int main(void){            
    printf("helloworld");    
    return 0;            
}
  • 当我们运行程序的时候,发现程序并没有运行,并且提示了错误。
    • 第三行:printf(“helloworld”); incompatible implicit declaration of built-in function 'printf'
  • 为什么删除了#include <stdio.h>后,printf("helloworld");会被电脑认为是错误呢?
  • 这和刚才士兵的情况是一样的。
    • 你:『电脑!』
    • 电脑:『到!』
    • 你:『输出helloworld!』
    • 电脑:『不会!』
  • printf是输出命令,而printf输出命令电脑本身不会,需要学习,而学习的过程就在stdio.h文件中,如果我们加上#include <stdio.h>后,结果就成为了这样。
    • 你:『stdio!』
    • stdio:『到!』
    • 你:『教会电脑使用printf!』
    • stdio:『是!』
    • stdio:『电脑,记住了,printf就是在显示器上输出一串字符』
    • 电脑:『记住了!』
    • 你:『电脑!printf(“helloworld”);』
    • 电脑:『helloworld!』
  • 其实电脑能学的还有很多东西,比如说数学能力。一行#include <math.h>就可以让电脑学会cos、sin等数学函数。
  • 笔者在测试的时候发现了一个有趣的现象,由于最新的翻译官都太聪明了,在你将程序说给翻译官听的时候,翻译官就发现你的程序含有printf但是忘记加入了#include<stdio.h>,所以翻译官在翻译给电脑听的时候,私自将#include<stdio.h>加上了,结果程序成功的执行,但还是给出了warning警告:
  • 2015-04-25/553b4f8c48e98
  • 虽然现在翻译官聪明了,但我们还是要确保程序中加入了#include<stdio.h>,以免某天翻译官犯傻,导致你写的程序出现了不可预知的错误。

命令②:int main(void)

  • 真正命令的开始
  • 我们看到这条命令的后面跟着一个大括号{,而我们程序的最后一行也有一个回括号},这两个括号之间的命令将是我们整个程序中最主要的部分,就如同main的中文释义『主要的』那样。

命令③:printf("helloworld");

  • 在显示器上打印(输出)helloworld
  • printf的学名叫做格式化输出,为何叫格式化输出我们马上就会讲解。

命令④:return 0;

  • 结束命令(关闭程序)
  • 这条命令后,程序就会关闭,也就是黑乎乎的窗口会被关闭,做事要有始有终,你要是不告诉电脑你的命令下达完了,他还会傻乎乎的等着你下一条命令呢,快让电脑休息下吧。对了,聪明的翻译官也并没有让我们的程序直接结束,而是让我们“press any key to continue”(按任意键继续),不然没等我们看到helloworld,这个黑乎乎的窗口就关闭了。

初学者的基本框架

  • 讲了这么多,不知道你对helloworld的程序能够掌握到那里,但是无论如何,要记住初学者的C语言框架,在很长一段时间内,你的代码都需要写上这四行代码:
#include <stdio.h> 
int main(void){ 
……
    return 0; 
}

Comments

comments powered by Disqus