1. 程式人生 > 資訊 >使用者反饋稱,Win11 會觸發部分遊戲反作弊致使誤封

使用者反饋稱,Win11 會觸發部分遊戲反作弊致使誤封

自動轉換

自動轉換按從低到高的順序轉換。

不同型別資料間的優先關係如下: 低--------------------------------------------->高

byte,short,char-> int -> long -> float -> double

運算中,不同型別的資料先轉化為同一型別,然後進行運算,轉換規則如下:

運算元1型別運算元2型別轉換後的型別
byte、short、char int int
byte、short、char、int long long
byte、short、char、int、long float
float
byte、short、char、int、long、float double double

強制轉換

強制轉換的格式是在需要轉型的資料前加上“( )”,然後在括號內加入需要轉化的資料型別。有的資料經過轉型運算後,精度會丟失,而有的會更加精確,下面的例子可以說明這個問題。

  public static void main(String[] args){
int x;
double y;
x = (int)34.56 + (int)11.2; // 丟失精度
y = (double)x + (double)10 + 1; // 提高精度
System.out.println("x=" + x);
System.out.println("y=" + y);
}
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;
double dou = i;
//強制型別轉換:(型別)變數名 高轉到低
//自動型別轉換 由低轉換到高,會自動轉換,不需要做特殊操作
/*
注意:
1.布林型別的資料是不能進行型別轉換的
2.不能把物件型別轉換為不相干的型別
3.在進行高容量轉換成低容量時,需要進行強制轉換
4.轉換的時候可以會存在記憶體溢位,或者精度問題

*/

}
public static void main(String[] args) {
//操作比較大的時候,注意溢位問題
//數字之間可以用下劃線分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;
System.out.println(total);//-1474836480
long total2 = money*years;//-1474836480 預設是int 轉換之前就已經存在問題了
System.out.println(total2);
long total3 = money*((long)years);//此時在轉換之前就全是是long資料型別了,就算結果就不會出現錯誤
System.out.println(total3);

}
public static void main(String[] args) {
//操作比較大的時候,注意溢位問題
//數字之間可以用下劃線分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;
System.out.println(total);//-1474836480
long total2 = money*years;//-1474836480 預設是int 轉換之前就已經存在問題了
System.out.println(total2);
long total3 = money*((long)years);//此時在轉換之前就全是是long資料型別了,就算結果就不會出現錯誤
System.out.println(total3);

}