可能重复:
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