关于C ++ 20二进制补码R4的问题

时间:2019-09-20 16:36:07

标签: c++ integer language-lawyer twos-complement c++20

我正在阅读the two's-complement proposal的修订版4(C ++ 20通过),并且有一些疑问。

在引言中说:

  • 状态通常,带符号整数算术仍然是不可交换的(尽管某些实现可以保证是可交换的)。

ford2Car一样,这真的意味着“不可交换”吗?还是应该读成“非关联”?

它也说:

  • 更改从有符号到无符号的转换始终是明确定义的:结果是目标类型的唯一值,该值与源整数模2 ^ N一致。

自时间开始以来,难道没有以这种方式很好地定义有符号到无符号的转换吗?是否应该显示“从无符号转换为有符号”?

更改列表中是否还有其他遗漏或错误陈述的内容?

1 个答案:

答案 0 :(得分:1)

请注意,采用的不是P0907,而是P1236


  

还是应该读成“非关联”?

是的

  

应该读“从无符号转换为有符号”吗?

是的。如果您查看P1236R1,则可以看到规则已更改为:

  

如果目标类型是无符号的,则结果值是与源整数一致的最小无符号整数(模2 n ,其中n是用于表示无符号类型的位数)。 / p>      

如果目标类型是带符号的,则该值可以用目标类型表示,则保持不变;否则,该值是实现定义的。

收件人:

  

否则,结果是目标类型的唯一值与源整数模2 N 一致,其中N是目标类型的范围指数。