c++ - 使用表达式对双精度进行大括号初始化?
问题描述
我不习惯使用大括号初始化,但我想我会开始移植我的代码,因为它自 c++11 以来就已成为标准。
出现了一个问题:下面的表达是否正确?
double MyFunction(double a,double b,int c)
{
double dx{(a-b)/c};
//do things to dx
return dx;
}
我正在使用基于“双”减法和整数除法的数学表达式的大括号初始化来初始化双精度数 dx。但这只是感觉不对,就像它可能会产生未定义的行为一样。上面的函数是否“正确”,它会返回预期的值而不被截断吗?
或者,我可以尝试double dx{(a-b)/double(c)};
或double dx = (a-b)/(double(c));
解决方案
double dx{(a-b)/c};
很好。表达方式
(a-b)/c
double
在分区的左侧和分区int
的右侧具有类型。通过通常的算术转换,将 int
右侧的 a 转换为 adouble
以匹配左侧,然后进行除法。这意味着您实际上是在将 a 除以double
a double
。
推荐阅读
- unity3d - unity 相机跟随滚动箱
- internationalization - 用于 qt 项目 (.ts) 的 Weblate 上的 i18n 降价
- python - 圣人数学重复过程
- sql-server - SQL Server 内存中 oltp 事务快照隔离
- reactjs - React typescript 正确输入 FunctionComponent 的方法
- arrays - 将字符数组转换为字符串?
- excel-formula - Excel:如果差异小于某个时间,则求和(在值范围内进行检查)
- php - 如何使用 laravel 查询生成器在 json 数组对象中搜索?
- java - 如何在界面中修改@Inject getter(从 AEM 传递)
- docker - docker:在构建镜像和启动容器之后了解镜像层