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
。