C语言编译环境的教学分析
关键词:C语言是计算机教学的一个重点,C语言从某种意义上来说连接了高级语言和汇编语言的中间桥梁,因此C语言的功能非常丰富,不仅仅能够体现在软件的编程方面,还体现在单片机等基本汇编语言的编程上,能够实现很好的无缝集成,本文研究的重点是根据C语言编译环境的不同来阐述不同的教学思路,进而指出一条更加科学合理的教学方法。
关键词:C语言;编译环境;教学分析
一、引言
目前C语言的编译环境主要有三种,两种属于可视化的C语言编程,分别是Borland公司开发的Turbo C 2.0和Turbo C++ 3.0,另外一家是微软公司研发的Visual C++ 6.0。还有就是在本世纪初常常使用的C语言的编译环境,基于DOS平台下的16位C语言,这个DOS平台的编译环境是非常经典的,是当时第一融合了程序编辑、编译以及调试和连接为一体的程序开发环境。只是后来图形操作系统占据主流,再加上微软开发了相应的Visual C++ 6.0以及宝兰公司开发的Turbo C++ 3.0,通过实现了图形化的开发环境并融入了编译、连接、调试等诸多功能,才正式成为当前C语言教学编译环境的主流。
特别是Visual C++ 6.0语言就更是如此,从2008年4月开始正式成为全国计算机等级考试二级和三级考试的C语言编译环境。Visual C++ 6.0又叫做VC,是微软可视化编程的重要组成部分,VC是基于32位操作系统的编译环境,编译环境实际上就是一种工具,能够让C语言在这个工具里更加容易的被使用,从某种意义上来说,C语言的教学时独立于编译环境的,但是目前对知识点的介绍,以及对C语言的灵活运用又脱离不了C语言的编译环境的使用,所以针对当前有关C语言不通的编译环境,有必要在C语言的教学时,要进一步引入对不通编译环境的教学,从而有助于提升学生对C语言能力的掌握。
二、编译环境的不同相应的数据存储空间会产生变化
编译环境从16位操作系统转变成32位操作系统,对于整型和指针类型的数据存贮空间将会发生一定的变化,虽然32位操作系统有效的扩大了计算机整型数,16位的操作系统的整型数只是2的16次方,无符号整型数的范围就在0到65535之间,但是32位操作系统则将这个数据提升到0到4294967295,在16位操作系统下有符号的整型则为-32768到32767,而32位操作系统下有符号整型则为-2147483648 到2147483647,从这个数据的扩大来看,通常而言在VC的编译环境下就不需要考虑数据溢出的问题,但是在16位操作系统中的DOS环境编译下,只有32767,因此常常会出现数据溢出的问题。比如在DOS环境下表达式20000+20000的值就变成了5536,而不是40000。从这点上来说,编译环境的不同,在其教学过程中就需要结合不同的教学方式让学生知道编译的注意事项,而且随着软件以及数据不断的膨胀,操作系统也发展到64位,这时的C语言编译环境依然会发生变化,此时无符号整型就从0变成了2的64次方-1,其整型规模已经非常巨大,此时完全可以不用考虑数据存贮空间溢出的问题了。比如下面的程序代码
#include <stdio.h>
void main()
{
int i= -1;
printf("%u\n",i);
}
在Turbo C 2.0(简称TC)下,输出的结果就是65535,但是才VC的运行环境下,则是4294967295,这就是TC是16位的C语言编译环境,但VC属于32位C语言的编译环境。因此输入的数值是不一致的,当人如果是64位的操作系统,那么最终的输出结果就是2的64次方减1这个数值。
对于指针型数据其实和基本整型数据存在着同样的问题,在16位操作系统下,存贮空间是为2个字节,到了32位操作系统下,就会变成4个字符。因此通过指针来赋值时,就要充分考虑指针存贮空间的变化,否则就会容易导致指针溢出的问题,而且指针溢出在程序规模不断增大下,很难通过调试发现,因此在针对指针方面的知识进行教学时,就需要充分考虑编译环境的不同而进行针对性的教学。
三、类型转换以及表达式求值顺序的变化分析
(一)类型转换的分析
C语言在编译时,自动类型转化时,字符型会转成整型值,float型数据首先会转化成double型,这是为了提升数据计算的准确性,这个规则在TC环境下适用,但是到了VC环境就会存在差别,在字符型的转换上,TC和VC是保持一致的,但是在float数据运算时,两个单精度的数据在TC环境下运算的结果是double型数据,但是在VC环境下依然得到的是float数据。不过一个是float数值和一个double数值进行运算时,TC和VC的最终结果都是double数值。因为VC在编译时,会根据数值类型的不同,会统一转化成精度更高的数值类型,因此最终的结果会变成double类型。
(二)表达式求值顺序变化分析
在ANSI C中并没有对二元算数运算符的两个运算分量的顺序进行规定,这导致了不同的C语言的编译环境对表达式的求值顺序的编译呈现出不同的结果,TC对于表达式的求值顺序才去的是先求左运算分量的值,然后再求右运算分量的值,但是VC的情况正好和TC相反,所以这往往会将表达式的结果呈现出不同的结果,这就要求C语言程序学习者需要结合不同的编译环境,对表达式进行正确的运算书写,这样才能够保证获得正确的结果。不过表达式的逻辑运算,TC和VC的运算结果能够保持一致,这也关键在于逻辑运算是在ANSI C引入了顺序点的标准,这确保了不同编译环境下能够将结果保持一致的根本原因。
四、总结
通过上面的分析,在C语言的编译环境进行教学时,一定要遵循编译环境对C语言的编译过程进行教学,发现该编译环境和其他C语言的编译环境的不同,找到不同的核心点,才能够有助于学生更好的领悟编译环境对于C语言程序设计的重要性,可能一个一不小心的数据类型的赋值存在问题,就可能会导致程序在调试过程出现bug,而且由于C语言程序设计遵循了瀑布流的原则,如果在大量的程序代码前,想要找出这样的疏忽一般是非常困难的。通过对编译环境的了解,才能够更好的编写出符合规范的代码,培养学生良好的变成习惯。
参考文献:
[1]梁海楠,童璐. 不同编译环境下的C语言教学[J]. 计算机光盘软件与应用,2011(19)
[2]宋元涛.Windows应用程序的用户界面设计研究[D].曲阜师范大学,2000
杨超(1975.11),男, 汉族 贵州遵义人 遵义职业技术学院 本科,实验师,从事计算机教育教学 电话15285218999
- 2025年中科院分区表已公布!Scientific Reports降至三区
- 官方认定!CSSCI南大核心首批191家“青年学者友好期刊名单”
- 2023JCR影响因子正式公布!
- 国内核心期刊分级情况概览及说明!本篇适用人群:需要发南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的学者
- 我用了一个很复杂的图,帮你们解释下“23版最新北大核心目录有效期问题”。
- 重磅!CSSCI来源期刊(2023-2024版)最新期刊目录看点分析!全网首发!
- CSSCI官方早就公布了最新南核目录,有心的人已经拿到并且投入使用!附南核目录新增期刊!
- 北大核心期刊目录换届,我们应该熟知的10个知识点。
- 注意,最新期刊论文格式标准已发布,论文写作规则发生重大变化!文字版GB/T 7713.2—2022 学术论文编写规则
- 盘点那些评职称超管用的资源,1,3和5已经“绝种”了