VC中的隐式转换 一般是隐藏的错误

本文详细解析了在编程中进行数据类型转换和指针初始化时可能遇到的问题,包括不同数据类型之间的错误赋值及如何正确处理负数赋值给无符号变量的情况。同时,介绍了如何定义指针并进行初始化,以及使用动态内存分配和内存填充的基本概念。

举例:

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));


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值