【问题标题】:Please explain the C language data structure [duplicate]请解释C语言数据结构[重复]
【发布时间】:2018-06-02 11:58:19
【问题描述】:

A和B的取值结果如下。

【问题讨论】:

  • 原因是隐式整数提升。 SO上有很多类似的问题。研究链接的副本。

标签: c types


【解决方案1】:

第一种情况,右侧表达式的类型为int,值为-121。第二种情况,类型为uint32_t,值为uint32_t(-121) == 4294967175。后者无法在float 中精确表示,因此会被四舍五入。

【讨论】:

  • 我认为这里的微妙之处在于,虽然uint8_t 是无符号类型,但当用作移位操作的左操作数时,它会被提升为int,而不是unsigned int。最后一个有符号左移的结果是一个负的 int 值(从技术上讲,我相信符号变化符合溢出的条件),当转换为 float 时它仍然是负数。
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2022-06-27
  • 1970-01-01
  • 2023-03-26
  • 2011-03-19
  • 1970-01-01
相关资源
最近更新 更多