相关疑难解决方法(0)

是否存在C的非二进制补码实现?

我们毫无疑问地知道,ISO C标准(以及C++,我认为,虽然我对C方面更感兴趣)允许签名数字的三个基础表示:

  • 二补;
  • 补充; 和
  • 符号/幅值.

维基百科的条目表明,60年代的IBM 7090使用了标志/幅度,PDP-1,CDC 160A和UNIVAC 1100使用的是补充,所有这些都可以追溯到60年代.

是否有其他任何具有这些替代表示的C(或底层硬件)实现,这些实现比五十年前更新了(它们是什么)?

对于不再存在的机器,保持某种标准似乎有点浪费.

c iso representation negative-number language-lawyer

41
推荐指数
2
解决办法
3605
查看次数

在一个C表达式中,unsigned int和signed int存在,哪种类型将被提升为什么类型?

我有一个关于C语言标准中的数据类型提升规则的查询.C99说:

C整数提升还要求"如果int可以表示原始类型的所有值,则该值将转换为int;否则,它将转换为unsigned int".

我的问题是在C语言表达式的位置unsigned intsigned int存在的情况下,哪种类型将被提升为什么类型?

例如int,不能代表unsigned int(值大于MAX_INT值)的所有值,而unsigned int不能代表-ve值,那么在这种情况下什么类型被提升为什么?

c integer-promotion

25
推荐指数
2
解决办法
3万
查看次数