C语言注意的细节:
1. 变量占用计算机内存的大小,变量的取值范围.
说明: 变量的占计算机中所占字节的大小,所占字节的大小也就来衡量变量的取值范围. ( var in [n,m] )
在实际编程中,我往往忽视变量在计算机所占内存大小,以及由此面决定一个变量的取值范围.从而对使程序看起来很可靠,看起来像是能像是那么一回事.在程序实际运行过程中会导致一些小问题.
拿我的经历来说,有两次印象深刻.
1). 在Palm平台上完成一个上下滚动条的功能,Palm的开发平台提供这样的一个控件,但要实现滚动,则需要自己动编程实现.上下滚动主要是用一个变量来完成方向的指引,也就是要区分正负方向.开始编程是用的是一个unsinged int 类型变量,在计算机的内存中占用4个字节,其变量的取值范围为[0,65535].
在编程实现时,其方向是原理是变量为正值向下流动,变量为负值往上滚动.由于其变量是一个unsinged int 类型,给这个变量赋值为-1时,以为这时候就可以往上滚动了,其编程运行的结果是当滚动条滚动只要向下滚动的时候,再也不往上滚动了.搞了半天,也看不出程序错在那里,又不死机的.实在没有办法,只能进行调试,才发现其中的奥妙.
当给这个unsigned int类型变量赋值为-1时,其实这个变量的真实值并不是-1,而是65535.(这里为什么会这样,还是要翻翻计算机基础的书来看看的,温故而知新,^呵呵^).这样就会导致滚动条只能往下滚动,而不能往上滚动,因为指示滚动条的文向的值总是为正数.这下知道为什么了吧.?区别就仅仅在于对这个变量的声明不能使用unsigned int,而是要用int.
很是奇怪,unsigned int 与int ,在我看来好像是没有什么不同的,都能用.事后才发现这是一个伟大的错误.
2).
2. 变量的初始化,否则根本不知道具体的值,是什么东东。尤其像数值型变量与字符型变量。
3. 函数在声明前加上类型,即使是void,也要换成另外一个类型,强调的程序的容错处量,以及程序的健状性。