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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基本数据类型使⽤注意事项
数值(⽂字常量),整数,浮点数,字符,字符串,布尔变量,枚举类型,数组这些基本数据类型的使⽤注意事项:(⼀)数值
(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]。

以上是我看过资料⾃⼰整理出来的结果,如有不对希望⼤家指出来。

如果不全请⼤家跟贴补充上来。

相关文档
最新文档