浮点数大小取决于操作系统吗?
Does float size depend on operating system?
很抱歉,我用谷歌找不到这个问题的答案。我不是一个说英语的人,也许我没有使用正确的单词搜索。
我记得数据类型的大小取决于体系结构单词的大小(也许我错了)。但是,我不确定大小是否也取决于操作系统。
现在我正在使用Windows 7 32位,我不确定当我使用Windows 7 64位时,浮点数是否会改变它的大小。
我使用Visual Studio 2012来编译我的解决方案,使用Win32项目。
如果我将windows版本从32位更改为64位,大小会改变吗?
我不是在问float和double有什么不同。如果我将操作系统从Windows 7 32位更改为Windows 7 64位(或反之亦然),那么在同一台计算机上,float是否会在内存中具有相同的大小(内存中的位数)。
从形式上看,浮点类型的大小取决于所使用的特定编译器。
实际上,对于基于内置浮点硬件芯片的系统(即除了某些嵌入式系统之外的所有系统),编译器将使用浮点硬件,并且所有针对该芯片的编译器将使用相同的float
和double
尺寸。
此外,桌面硬件已经确定了IEEE 754浮点标准,该标准规定了float
和double
的大小(long double
是相当不同的事情)。因此,当您的目标是桌面系统时,可以安全地假设float
将在任何地方具有相同的大小,并且double
将在任何地方具有相同的大小。
如果您担心这一点,您可以使用std::numeric_limits<float>::is_iec559
和std::numeric_limits<double>::is_iec559
来检查编译器使用的浮点实现是否符合IEEE 754 (IEC 559是IEEE 754标准的旧名称)。
3.9.1基本类型有三种浮点类型:float、double和long double。类型double提供的精度至少与float一样高long double类型提供的精度至少与double相同。的类型的值集是的值集的子集类型double;类型的值的集合是的子集长双精度类型的值集。
重点是我的。c++标准不要求浮点类型的任何特定表示。浮动数据类型的大小在不同的操作系统、不同的操作系统版本、甚至同一操作系统的不同编译器、甚至同一编译器的不同编译选项之间可以改变,也可以保持不变。
- 重载运算符new[]的行为取决于析构函数
- 在C++中设置基于操作系统的文件路径
- 新的放置取决于 iostream
- Writefile() 无法写入数据,具体取决于数据的长度
- 如何在工厂方法中返回指向基于基础操作系统的派生类的有效指针
- ASIO signal_set多个 IO 线程不可靠,具体取决于代码顺序?
- SFINAE是否取决于类型推断?
- 将强制转换简化为取决于参数的类型
- 修复"-Wunused-parameter"取决于预处理器条件的警告
- WideCharToMultiByte在英语操作系统上不转换日语
- 如何在 Windows 操作系统中在 geany 中安装插件
- 内存中类位置的成员是否取决于类成员在类定义中的位置?
- 操作系统平台支持宏和提升库
- 从utsname找出Linux操作系统名称
- 为什么 free() 函数不将内存返回给操作系统?
- 我可以让编译器忽略特定于操作系统的方法吗?
- 如何使用C预处理器生成可变大小(取决于操作系统)的十六进制文字
- 为什么在所有数据类型中,int 取决于操作系统或编译器
- dynamic_cast失败 - 具体取决于操作系统版本
- 浮点数大小取决于操作系统吗?