VC中的隱式轉換 一般是隱藏的錯誤

2021-06-29 04:40:40 字數 1161 閱讀 7764

舉例:

unsigned short  utemp ;

double dtemp ;

double * ptemp = dtemp*utemp; 可能出錯 有可能本來是很小的資料結果變成非常大的資料

正確的寫法是:double * ptemp = dtemp*(double)utemp; 可能出錯

unsigned short uresult = 0;

if (dtemp<0) //如果乙個double資料有可能是負數,但是需要賦值給乙個無符號變數,可以嘗試將小於0的置0;

uresult = dtemp;

否則,如果強制uresult  = (unsigned short)dtemp;   

此時if(-1if(dtemp<-1) ,(unsigned short)dtemp;實際計算機輸出-1的補碼,比如如果dtemp;是-1,(unsigned short)dtemp就等於了65535之,乙個很大的資料。是錯誤的

舉例1:

double dtemp1 = -0.002;

unsigned short dtemp2= 100;

double dte*** = dtemp1 * dtemp2;// dte***的值是-0.2

unsigned short dtemp4 = dte***;//dtemp4的值是0

舉例2:

double dtemp1 = -0.01;

unsigned short dtemp2= 100;

double dte*** = dtemp1 * dtemp2;// dte***的值是-1

unsigned short dtemp4 = dte***;//dtemp4的值是65535

舉例3:

double dtemp1 = -0.02;

unsigned short dtemp2= 100;

double dte*** = dtemp1 * dtemp2;// dte***的值是-2

unsigned short dtemp4 = dte***;//dtemp4的值是65534

題外話:定義指標並初始化

double *ptemp;

ptemp = new double[100];

memset(ptemp, 0, 100*sizeof(double));

mysql 隱式轉換 mysql中的隱式轉換

在mysql查詢中,當查詢條件左右兩側型別不匹配的時候會發生隱式轉換,可能導致查詢無法使用索引。下面分析兩種隱式轉換的情況 看表結構 phone為 int型別,name為 varchar 兩種情況都可以用到索引,這次等號右側是 2 注意帶單引號喲,左側的索引欄位是int型別,因此也會發生隱式轉換,但...

隱式轉換中隱式引數與隱式函式的使用

隱式引數的使用 要定義多個隱式引數時,需要使用柯里化函式。隱式轉換作用就是 當呼叫方法時,不必手動傳入方法中的隱式引數,scala會自動在作用域範圍內尋找隱式值自動傳入。1 同型別的引數的隱式值只能在作用域內出現一次,同乙個作用域內不能定義多個型別一樣的隱式值。2 implicit 關鍵字必須放在隱...

Scala中的隱式轉換函式 隱式引數和隱式類

隱式轉換函式 所謂隱式轉換函式指的是implicit關鍵字修飾的且只有乙個引數的函式,其作用是 1.隱式轉換增強現有型別,2.隱式轉換做引數型別轉換 1.例如 inplicit def int2string n int string n.tostring 上案例 我們把fruit物件轉換成了monk...