VC中的隐式转换 一般是隐藏的错误
来源:互联网 发布:java如何获取访问者ip 编辑:程序博客网 时间:2024/05/02 04:21
举例:
unsigned short uTemp ;
double dTemp ;
double * pTemp = dTemp*uTemp; 可能出错 有可能本来是很小的数据结果变成非常大的数据
正确的写法是:double * pTemp = dTemp*(double)uTemp; 可能出错
unsigned short uResult = 0;
if (dTemp<0) //如果一个double数据有可能是负数,但是需要赋值给一个无符号变量,可以尝试将小于0的置0;
{
dTemp= 0;
}
uResult = dTemp;
否则,如果强制uResult = (unsigned short)dTemp;
此时if(-1<dTemp<0) ,(unsigned short)dTemp;实际计算机输出是0;
if(dTemp<-1) ,(unsigned short)dTemp;实际计算机输出-1的补码,比如如果dTemp;是-1,(unsigned short)dTemp就等于了65535之,一个很大的数据。是错误的
举例1:
double dTemp1 = -0.002;
unsigned short dTemp2= 100;
double dTemp3 = dTemp1 * dTemp2;// dTemp3的值是-0.2
unsigned short dTemp4 = dTemp3;//dTemp4的值是0
举例2:
double dTemp1 = -0.01;
unsigned short dTemp2= 100;
double dTemp3 = dTemp1 * dTemp2;// dTemp3的值是-1
unsigned short dTemp4 = dTemp3;//dTemp4的值是65535
举例3:
double dTemp1 = -0.02;
unsigned short dTemp2= 100;
double dTemp3 = dTemp1 * dTemp2;// dTemp3的值是-2
unsigned short dTemp4 = dTemp3;//dTemp4的值是65534
题外话:定义指针并初始化
double *pTemp;
pTemp = new double[100];
memset(pTemp, 0, 100*sizeof(double));
- VC中的隐式转换 一般是隐藏的错误
- VC中一般的断言错误
- 将中缀表达是转换为后缀表达式(逆波兰式)的一般算法
- VC中的各种数据类型之间的转换
- 隐藏在自动类型转换后的错误
- 关于vc中的错误的小结
- VC中的数据类型转换
- vc++中的坐标转换
- vc是实现RootKit文件隐藏
- vc是实现RootKit文件隐藏
- VC中的LNK2001错误
- VC中的错误
- ora-00600 [12700]的故障一般是由于table或index的数据块有错误
- 很“隐藏”的转换
- VC++编程隐藏计算机中的鼠标
- VC隐藏Console的界面
- vc++ 隐藏控制台的方法。
- 关于vc++中的坐标转换的几点认识
- Oracle树形汇总--connect_by_root
- iOS开发new与alloc/init的区别
- Android学习笔记--文件的读写
- XMPP中离线消息的发送
- 各种Layout用到的一些重要的属性
- VC中的隐式转换 一般是隐藏的错误
- malloc 源码
- gdb显示汇编调试
- os日期格式转换
- 谁说3D打印只能做模型?这项新技术搞定了量产
- 野指针理解和处理
- 获取WebView里的网页文本内容
- 递归递归删除子目录下所有.o后缀文件
- 谁说3D打印只能做模型?这项新技术搞定了量产