显式/隐式类型转换C ++

用户名

我有一行代码

double i = 1 + (long)1.5* 5.0f

我的问题是转换顺序和结果是什么?一直在寻找这样的例子,但无济于事。有什么好的指南可以帮助我理解它吗?

迈克·西摩

我的问题是转换顺序和结果是什么?

将强制转换应用于,以1.5提供longwith值1

将其转换为float,与相乘5.0f,给出一个floatwith值5.0f

1转换float为具有该值的加法,给出一个floatwith值6.0f

最后,将其提升为double(保留值6.0)以分配给i

假设使用非疯狂的浮点格式,可以精确地表示小整数。否则,可能会出现舍入错误。

如果要转换乘法结果,请使用括号控制运算符的优先级:

double i = 1 + (long)(1.5* 5.0f);  // = 8.0

或使用C ++样式的强制转换,强制使用括号:

double i = 1 + static_cast<long>(1.5* 5.0f)

有什么好的指南可以帮助我理解它吗?

这是一个:http : //en.cppreference.com/w/cpp/language/operator_precedence请注意,类型转换的优先级比乘法高,而乘法又比加法高(3 vs. 5 vs. 6)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显式/隐式类型转换C ++

来自分类Dev

C ++隐式类型转换

来自分类Dev

C ++隐式类型转换

来自分类Dev

C ++构造函数隐式类型转换

来自分类Dev

指针类型的C ++隐式转换

来自分类Dev

C ++构造函数隐式类型转换

来自分类Dev

无法隐式转换C#类型

来自分类Dev

无法隐式转换类型,存在显式转换(您是否缺少强制转换?)

来自分类Dev

无法将类型'int'隐式转换为'ushort':已经显式转换

来自分类Dev

无法隐式转换类型。存在显式转换(您是否缺少演员表?)

来自分类Dev

LINQ-无法隐式转换类型,存在显式转换

来自分类Dev

无法隐式转换类型'System.DateTime?' 到“ System.DateTime”。存在显式转换

来自分类Dev

无法隐式转换类型'System.DateTime?' 到“ System.DateTime”。存在显式转换

来自分类Dev

隐式转换C ++

来自分类Dev

C隐式转换?

来自分类Dev

std :: bind的返回类型隐式转换为两个不同的显式构造函数

来自分类Dev

std :: bind的返回类型隐式转换为两个不同的显式构造函数

来自分类Dev

快速隐式转换类型

来自分类Dev

函数类型的隐式转换

来自分类Dev

无法隐式转换类型

来自分类Dev

显式转换是否总是与隐式转换相同?

来自分类Dev

使用C#进行ASP.NET Web开发。无法将类型'object'隐式转换为'bool'。存在显式转换(您是否缺少演员表?)”

来自分类Dev

C#隐式/显式字节数组转换

来自分类Dev

IReadOnlyCollection上的隐式/显式强制转换混乱

来自分类Dev

隐式和显式强制转换的优缺点

来自分类Dev

类和子类之间的隐式和显式转换

来自分类Dev

隐式和显式强制转换的优缺点

来自分类Dev

C ++ / CLI中C#类的显式类型转换

来自分类Dev

C ++ / CLI中C#类的显式类型转换

Related 相关文章

热门标签

归档