首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将真值赋值给浮动

将真值赋值给浮动
EN

Stack Overflow用户
提问于 2012-07-12 08:18:50
回答 2查看 317关注 0票数 2

它能保证

  • 将true赋值给浮动变量,结果在1.0f中
  • 将false赋值给浮动变量,结果为0.0f
  • 测试上述变量的真相返回预期(真和假分别?)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-12 08:31:21

是。前两项,4.9/2 (“浮动-积分转换”):

如果源类型为bool,则将值false转换为零,并将值true转换为1。

对于最后一个,4.12/1 (“布尔转换”):

零值、空指针值或空成员指针值转换为false;任何其他值都转换为真。

另外,我认为您需要知道它保证为零,并且1可以表示为float的值。这是上面所暗示的(否则转换不能像所描述的那样运行),但我不确定它是否以及在哪里显式地说明了哪些整数值需要在float中准确表示。

引文来自N3337,几乎完全是C++11。自那以后,标签变成了"C++“,而不是"C++11”-- C++03中的规则是一样的,但措辞和段落编号可能有所不同。

票数 3
EN

Stack Overflow用户

发布于 2012-07-12 08:46:13

引用标准(N3290),第4.5节第6、7段:

..。bool类型的prvalue可以转换为int类型的prvalue,false变为0,true变为1。这些转换被称为整体提升。

第4.9节第2段:

整数类型或非作用域枚举类型的prvalue可以转换为浮点类型的prvalue。如果可能的话,结果是准确的。如果正在转换的值位于可以表示的值范围内,但不能准确表示值,则它是下一个较低或更高可表示值的实现定义的选择。

(如果零和一符合IEEE 754标准,则可以精确地(不丢失)表示为浮标。)

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

https://stackoverflow.com/questions/11447709

复制
相关文章

相似问题

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