C++ 关于类型转换,编译器对我的方法做了什么

C++ 关于类型转换,编译器对我的方法做了什么,c++,type-conversion,C++,Type Conversion,嘿,如果你能告诉我编译器对我的方法做了什么,我将不胜感激。如果我用区域(10.1,10.1)来调用它它返回我102。那么.01被切断了?你有一个好的网站,我可以在那里获得关于这个特定主题的信息吗?谢谢你的时间 float Area (float length, float width){ int result; result = length*width; return result; } 由于您将浮点表达式的值赋给int,因此数据在赋值时会被截断(但在表达式求值之后)。由于您将浮点表达式的值

嘿,如果你能告诉我编译器对我的方法做了什么,我将不胜感激。如果我用
区域(10.1,10.1)来调用它它返回我
102
。那么
.01
被切断了?你有一个好的网站,我可以在那里获得关于这个特定主题的信息吗?谢谢你的时间

float Area (float length, float width){
int result;
result = length*width;
return result;
}


由于您将浮点表达式的值赋给int,因此数据在赋值时会被截断(但在表达式求值之后)。

由于您将浮点表达式的值赋给int,因此数据在赋值时会被截断(但在表达式求值之后)。

请问如何,编译器是否应该能够区分第一个参数和第二个参数之间的差异?为什么要赋值给int?这不可能是正确的,因为您声明了两次
length
,而且格式不正确。你的意思是长度和宽度吗?@ChrisLutz:Psycholine++编译器的版本是0.9.42,随时都会有一个1.0版本™. 您经常看到它用于堆栈溢出。@Fred Nurk-也许堆栈溢出就是编译器!也许人工智能编译器的信息数据库就是这样,它知道如何将SO上发布的每一位错误代码转换为机器代码,从而实现预期的功能。也许很快我们就可以拥有神话般的“Do[task]”编程语言了。[插入奇点笑话]我可以问一下,编译器应该如何分辨第一个参数和第二个参数之间的差异?为什么要赋值给int?这不可能是正确的,因为你声明了两次
length
,而且格式不正确。你的意思是长度和宽度吗?@ChrisLutz:Psycholine++编译器的版本是0.9.42,随时都会有一个1.0版本™. 您经常看到它用于堆栈溢出。@Fred Nurk-也许堆栈溢出就是编译器!也许人工智能编译器的信息数据库就是这样,它知道如何将SO上发布的每一位错误代码转换为机器代码,从而实现预期的功能。也许很快我们就可以拥有神话般的“Do[task]”编程语言了。[插入奇点笑话]那么这个方法在转换后仍然会收到一个浮回?@DannyRe-是的。您正在将
float
答案转换为
int
,然后再转换回
float
,强制截断为零。@DannyRe-是的…但值仍然被截断,因为您将结果存储为int。您可以将截断的数据转换回float(固有数据丢失保持不变)。如果不想丢失,只需将方法主体更改为一行:返回长度*宽度@DannyRe:
result=
部分导致从
float
int
的转换,并导致忘记大约0.01。然后是,
返回结果部分导致从
int
float
的转换,因为返回类型是
float
。因此该方法在转换后仍会收到一个float back?@DannyRe-Yes。您正在将
float
答案转换为
int
,然后再转换回
float
,强制截断为零。@DannyRe-是的…但值仍然被截断,因为您将结果存储为int。您可以将截断的数据转换回float(固有数据丢失保持不变)。如果不想丢失,只需将方法主体更改为一行:返回长度*宽度@DannyRe:
result=
部分导致从
float
int
的转换,并导致忘记大约0.01。然后是,
返回结果部分导致从
int
转换为
float
,因为返回类型是
float