基本数据类型使用注意事项

数值(文字常量),整数,浮点数,字符,字符串,布尔变量,枚举类型,数组这些基本数据类型的使用注意事项:

(一)数值
(1)避免使用"神秘数值".
神秘数值是程序中出现的,没有经过解释的数值文字常量,如100,122。
可以用定义常量和全局变量的方法来代替神秘数值。
例如:
#define MAX 100
const int MAX = 100;
(2)预防除零错误
在除法的时候要考虑表达式的分母是否有可能为0。

(二)整数
(1)检查整数除法
例如:
7/10他不等于0.7,而是0,或者等于负无穷大。
在现实世界里10*(7/10) = (10*7)/10 = 7,但在整数运算中却不同。10*(7/10) = 0。
(2)整数溢出
在做整数乘法和加法的时候容易出现这种情况。
避免整数溢出的最简单方法是考虑算术表达式中的每个项,设想每个项的最大值,预料出结果。
(3)中间结果溢出
例如:
int a = 1000000;
int b = 1000000;
int product = a * b / 1000000;
结果是product = -727;是不是跟预想的结果不一样。问题是出现在a * b这里,a * b的结果就已经大于了整数的最大取值范围。

(三)浮点数
(1)避免相差很大的两个浮点数相加减
例如:
1000000.00 + 0.1 可能等于的是1000000.00,因为32位不能给你足够的有效位数包容1000000和0.1之间的数值区间。
(2)避免等量判断
很多应该相等的浮点数值并不一定相等。
例如:
C#代码
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double nominal = 1.0;
            double sum = 0.0;

            for (int i = 0; i < 10; i++)
            {
                sum += 0.1;
            }

            if (nominal == sum)
            {
                Console.WriteLine("same");
            }
            else
            {
                Console.WriteLine("differnt");
            }
        }
    }
}
这段程序的结果是different。
(3)舍入误差问题
解决方案:
1.使用精确度更高的变量类型。
2.换用二进制编码的十进制变量。
3.把浮点变量变成整型变量。

(四)字符和字符串
(1)不要使用神秘字符和字符串。
(2)访问字符串时避免溢出。
(3)知道你的语言和开发环境如何支持Unicode.

(五)布尔变量

(1)用布尔变量对程序加以文档说明
例如:

if ((elementIndex < 0) || (MAX_ELEMENTS < elementIndex) || (elementIndex == lastElementIndex))
{.....}

这段代码布尔判断目的不明确,如果该成下面这样就比较明确了。

bool finished = (elementIndex < 0) || (MAX_ELEMENTS < elementIndex);
bool repeatedEntry = (elementIndex == lastElementIndex);
if (finished || repeatedEntry ){....}

(六)枚举类型
(1)枚举可以提高可读性。
例如:

if (color == 1)

if (color == Color_red)

相比之下第二条语句可读性就高。

(2)枚举可以提高可靠性。
使用枚举使编译器执行很严格的类型检查。
例如:
    enum Color
    {
        Color_red,
        Color_blue,
        Color_black,
    };
声明了一个枚举类型Color,如果声明了一个Color类型的变量c,编译器只能允许Color_red,Color_blue,Color_black这3个值付给c。
(3)枚举可以简化修改。
就拿上边的Color来说吧,如果以后程序想添加一些颜色只需往列表中增加元素即可,编译以后就可以运行了。

(七)数组
(1)确认所有数组下标都没有超出数组的边界。
(2)如果数组是多维的,确认下标使用顺序的正确的。
(3)提防下标 串换串话。
这种情况出现在使用嵌套循环的时候,不要把Array[i]写成Array[j]。

以上是我看过资料自己整理出来的结果,如有不对希望大家指出来。如果不全请大家跟贴补充上来。

转载于:https://www.cnblogs.com/spnider/archive/2006/07/25/459262.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值