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

被折叠的 条评论
为什么被折叠?



