首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++arithmetic内部操作

C++arithmetic内部操作
EN

Stack Overflow用户
提问于 2020-10-02 17:05:31
回答 1查看 41关注 0票数 0

我正在尝试做一些精确的计算,我有兴趣学习C++ (在我的例子中)是如何在内部执行算术操作的。假设我们有下面的程序(我只是写主体,因为它并不是用来实际运行的)

代码语言:javascript
复制
double x = 1./3.;
double y = 0.12345;

double z = 9.* y + x*x;

我在想的是,C++x存储在内存中的某个地方,从而产生(最接近)值1./3.的二进制表示。y也是如此。但是z会发生什么呢?它是否在表示了所有发生的数字/变量之后,以其相应的最接近的二进制表示进行加法/乘法?否则就会发生其他事情。我欢迎任何可以解释我的问题的参考资料。

EN

回答 1

Stack Overflow用户

发布于 2020-10-02 17:21:42

计算机使用一种称为IEEE754标准的东西来表示浮点值(双精度和浮点数)。您可以在线阅读有关该标准的更多信息。对于你的问题,c++编译器做了这样的事情-首先,它将数字9.0存储在内存中的某个地方,然后读取变量y的值,将这两个数字相乘,并将它们存储在某个临时变量中(我们称之为tmp0)。然后,它将x乘以x,并再次将其存储在临时变量中(让我们称其为tmp1),然后,将tmp0和tmp1与变量z相加,并从内存中删除tmp0和tmp1。是的,如果这就是你的答案,它首先将所有这些变量存储在内存中的某个地方,然后他才能计算z的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64168916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档