很多同学在刚开始学习C语言的时候,基本不会也不用去了解C语言的基本信息,比如,C语言标准C11和C99。还有的同学不知道C语言编译器究竟是个什么东西,有何作用。为了解答初学者的疑惑,笔者给大家简单明了的解释一下,只是抛砖引玉,欢迎大咖们指正。
编译器
简单的说,编译器的任务就是把人类可看懂的源代码变成机器可以直接执行的指令。在一个程序编写完成后,机器并不能直接看懂并且执行指令,需要通过编译器这个中间转换器,将源代码通过编译成一条条机器能够识别并且能够正确执行机器指令。所以,可以不恰当的将编译器比作一个翻译人员,将你们看不懂的外国语言翻译成你能懂得国语,这样你才能根据你对翻译结果的理解,作出反馈。至于有些词汇怎么翻译,句子怎么组织,就看这个翻译人员的语言功底了,也就是说编译器的好坏,会影响到最终机器对指令的识别和执行,当然会影响到最终的执行结果。还有一个问题大家需要明白,这里指的机器并不指某一台计算机,而是所有的虚拟机器,它们多种多样,千差万别,当然需要的编译器也很多,但是,有了编译器,会给编程人员带来很多便利,减少了很多底层工作。C语言并不只有一种编译器,例如gcc,visual c++等。
C语言标准
上面谈到C语言编译器有很多,所以就有可能发生一些编程人员不想看到的事情,那就是同一句C语言代码,却被不同的C语言编译成不同的指令,所以需要一种标准来规范编译器,这样,C语言标准就诞生了。目前,大家看到的会有C11标准和C99标准。c99的一些新的特性会影响到程序的编译,但是有一种比较省心的做法是将源代码保存为.cpp,特别是在算法竞赛当中,最好将C程序当作c++来提交,虽然有点不严谨,但是,算法竞赛的主要目的是用代码解决问题,只要能更好更快的解决问题就行。