基本数据类型使用注意事项
(一)数值
(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
基本数据类型使用注意事项相关推荐
- switch支持的10种数据类型和注意事项
文章目录 switch支持的数据类型[切记不支持long.double.float及其包装类型] switch注意事项 switch支持的数据类型[切记不支持long.double.float及其包装 ...
- Python基本数据类型的注意事项
Python的数据类型主要有如下9种: bool:布尔型,True/False int:整数型,-1,0,1,2,3... float:浮点型,0.01,3.14,-2.234 complex:复数型 ...
- 倍福PLC的C++ ADS通讯定义数据类型时注意事项
在C++程序与倍福PLC通过ADS通讯时,如果C++程序中定义的变量与PLC程序中相应变量定义的数据类型不对应时,可能会出现数据读取或者写入错误,以下为调试过程中容易出错的实践总结记录. 1.向PLC ...
- Go 变量及基本数据类型3
#### Go 变量及基本数据类型(三)今天学习一下剩下的两个基本数据类型(布尔类型,字符串类型)以及基本数据类型的相互转换##### 布尔类型布尔类型也称为bool 类型, bool 类型只允许取值 ...
- Golang基本数据类型的相互转换
基本数据类型的相互转换 基本介绍 Golang 和 java / c 不同,Go 在不同类型的变量之间赋值时需要显式转换.也就是说 Golang 中数 据类型不能自动转换. 基本语法 表达式 T(v) ...
- 【c语言学习概述-基本数据类型】
各大编程语言的主要用途 C/C++ C++ 是在C语言的基础上发展起来的,C++ 包含了C语言的所有内容,C语言是C++的一个部分,它们往往混合在一起使用,所以统称为 C/C++.C/C++主要用于P ...
- 会汇编语言再学c语言,只有C语言功底的我学习汇编语言可以吗?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一讲 单片机的基础架构及基本外围电路 1 单片机的内部基本组成 2 单片机的管脚及其各管脚的功能 3 晶体振荡器电路及复位电路 4 电平 ...
- sql数据表改为自动递增显示与其他表关联_MySQL萌新第一季 第四话-数据表的基本操作...
本话旨在完成以下内容: 在数据库中,数据表是数据库中最重要和基本的操作对象,是数据存储的基本单位.换句话说我们操作数据库其实重要的就是操作数据表.本章将详细介绍数据表的基本操作,主要内容包括:创建数据 ...
- python的JSON模块和OS模块
JSON全名是JavaScript Object Notation(即:JavaScript对象标记) 它是JavaScript的子集. 前端和后端进行数据交互,其实就是JS和Python进行数据交互 ...
最新文章
- python 读取excel 表格的数据
- 参加维基链超级节点竞选有什么好处呢?
- 9点到17点半 cron_SpringQuartz定时任务的cron表达式书写
- python逆转字符串封装_Python 实现文本操作之逆转字符串
- 迷宫python_Python走迷宫,递归 - nixBlog
- github网址无法访问怎么办?
- Java 数字相关操作通用类 NumberUtils.java
- 富文本_轻量级 web 富文本编辑器 —— wangEditor
- 程序员们怎么过端午?你属于哪一款?
- 本地jupyter notebook远程连接服务器
- nginx+keepalived构建主备负载均衡代理服务器
- JavaScript中的this详解
- Google 开通免费主机服务,如果你有email帐户,你就可以注册,目前最多只能存放40页面...
- 基于等分线性回归方法的城乡收入差距因素比较分析——以广东省为例
- autofs后 卸载_nfs挂载无法卸载
- ubuntu 安装和删除字体
- 网易企业邮箱服务器没有响应,网易邮箱企业邮箱无法收发信是怎么回事
- 解密android日志xlog,mars的xlog日志文件解析以及日志查看工具介绍
- JavaScript中的表格:文本域
- 矩阵旋转(逆时针九十度