C和指针前六章之第三章~数据

来源:互联网 发布:淘宝市场 编辑:程序博客网 时间:2024/05/16 04:27


 

在头文件 limits.h 中定义了上表中各个整形数的范围。同时还有 CHAR_BIT(至少是8位),MB_LEN_MAX 规定一个多姿接字符最多允许的字符数量。多字节字符常量在不同的环境中实现可能不一样,所以不鼓励使用。


               关于数据缺省值:char 在不同的编译器中不定。(我用的gcc中默认是signed char)

 显式声明char类型会带来兼容性问题。还有,只有当char型变量显式声明为signed 或 unsigned 时, 才对它执行算术运算。


       负号被解释为单目操作符而不是整数值的一部分,实践中没有什么意义。


       头文件float.h定义了名字FLT_MAX、DBL_MAX、LDBL_MAX、FLT_MIN、DBL_MIN、LDBL_MIN分别表示float、double、longdouble型的范围。

        浮点数字面值在缺省情况下都是double类型的,除非它的后面跟一个L或l表示它是一个long double类型的值, 或者跟一个F或f表示它是一个float类型的值。


       字符串常量:

       K&R C 具有相同的值的不同字符串常量在内存中是分开存储的,因此许多编译器允许程序修改字符串常量。

       ANSI C 则声明如果对一个字符串修改其效果是未定义的。它也允许编译器把一个字符串常量存储于同一个地方,即使它在程序中多次出现。因此你需要修改字符串,清把它存储于数组中。


      数组的一个经验法则:如果下标值是从那些已知是正确的值计算得来,那就无需检查它的值。如果一个用作下标的值是根据某种方法从用户输入数据产生而来的,那就在使用之前必须进行检测,确保它们位于有效范围之内。


常量:

#define       MAX_ELENMENTS      50

int              const           max_elenments = 50

在这种情况下,使用#define比使用const变量更好。因为只要允许使用字面值常量的地方都可以使用前者,比如声明数组的长度。const 变量只能用于允许使用变量的地方。


函数的形式参数不能声明为静态,因为实参总是在堆栈中传递给函数,用于支持递归。


修改变量的存储类型并不表示修改变量的作用域。


在声明变量的同时进行初始化和先声明后赋值只有风格之差,并无效率之别。

原创粉丝点击