可能重複:
Identify the implicit cast and explicit cast如何使用隱式和顯式強制轉換?
int a = 2, b = 3;
float f = 2.5;
double d = -1.2;
int int_result;
float real_result;
real_result = a * f;
real_result = (float) a * b;
d = a + b/a * f;
d = f * b/a + a;
可能重複:
Identify the implicit cast and explicit cast如何使用隱式和顯式強制轉換?
int a = 2, b = 3;
float f = 2.5;
double d = -1.2;
int int_result;
float real_result;
real_result = a * f;
real_result = (float) a * b;
d = a + b/a * f;
d = f * b/a + a;
如果沒有信息丟失,編譯器會促進你的數據類型:
int a=3;
float b=a; //b=3.0f
如果有損失的信息,編譯器應該降級併發出警告:
float b=4.3;
int a=b; //a=4
[
short a=2000;
int b;
b = (int) a; // c-like cast notation
b = int (a); // functional notation
] 1
隱式轉換:REAL_RESULT = A * F;
明確演員表:real_result =(int)(a * f);
我會解釋表達的一個在您的文章:
表達:REAL_RESULT = A * F;
因爲REAL_RESULT的類型是INT可能是小的結果存儲到一個* F(雙) - >你可能在你的程序(損失有一個邏輯錯誤信息)。
一些編譯器會顯示警告通知你關於邏輯錯誤,如果你確信你表達的邏輯,你可以告訴編譯器使用顯式類型轉換中止這樣的警告:
REAL_RESULT =( int)(a * f);
int a = 2,b = 3;
float f = 2.5;
double d = -1。2;
int int_result;
float real_result;
real_result = a * f;/*這裏隱式強制轉換由編譯器應用於變量a。變量a首先被提升爲隱式浮動,然後執行表達式。 */ real_result =(float)a * b;/*這是一個明確的演員。在這裏,你強制轉換a * b的結果爲float。 */
d = a + b/a * f;
d = f * b/a + a;
您無法實施隱式轉換。隱式轉換由編譯器實現。
要小心,同時實施明確的演員。因爲在顯式強制轉換變量me的值時,將大數據類型值轉換爲小於它的數據類型時會失去某種精度。
你能給我們更多關於你想要做什麼的細節嗎?最終結果應該是什麼,或者其中的任何變量是什麼? – Tarka 2010-03-16 02:23:10
這是一個更正: 它是一個家庭作業 int a = 2,b = 3; float f = 2.5; double d = -1.2; in tint_result; float real_result; (1)real_result = a * f; (2)real_result =(float)a * b; (3)d = a + b/a * f; (4)d = f * b/a + a; – user292489 2010-03-16 02:46:36
我已經更新了代碼和標題,但我仍然不清楚你的問題是什麼。此外,您可以編輯自己的問題以添加所需的任何新信息。 – 2010-03-16 03:06:08