gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:36 24 4
gpt4 key购买 nike

我有一行代码

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

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

最佳答案

My question is what is the conversion order and the result?

转换应用于 1.5,给出一个 long,值为 1

将其转换为 float 以与 5.0f 相乘,得到值为 5.0ffloat

1 被转换为 float 以与该值相加,得到一个 float 值为 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)

Any good guides out there that may help me understand it?

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

关于c++ - 显式/隐式类型转换 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19116743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com