【问题标题】:"The C standards set lower bounds on the numeric ranges of the different data types, but there are no upper bounds"?“C 标准对不同数据类型的数值范围设置了下限,但没有上限”?
【发布时间】:2018-10-19 10:49:42
【问题描述】:

在阅读我的 Randal E. Bryant 和 David R. O'Hallaron 的教科书计算机系统时,我遇到了一个问题:

C 标准为不同数据类型的数值范围设置了下限, 但没有上限。

这是什么意思?

【问题讨论】:

  • 这意味着,在某些实现中,数据类型(例如unsigned char)的范围不能小于标准规定的范围(例如0255),但可以有更大的范围(065535068719476735 (2^36 - 1))
  • 个上限,但它们是由实现定义的。需要一个实现来记录所有限制。

标签: c types architecture system limit


【解决方案1】:

这意味着例如 C 标准规定 int 至少应该足够大以容纳 -3276732767 的值,但它可能更大。

在现实世界中,16 位计算机使用 -3276832767,因为它们使用 2 的补码。而 32 位计算机使用 -2.14 到 +21.4 亿。

【讨论】:

  • 所以如果我设计的 int 有 -40000 ,那不行,但它可以是 40000。对吗?
猜你喜欢
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2020-11-25
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
相关资源
最近更新 更多