新的C++标准仍然没有规定整数类型的二进制表示方式。这是因为有使用非2的补码算术的C++实现么?我认为这很难相信。还是委员会担心未来硬件的进步会使“位”这个概念过时?同样也很难相信。有人能否阐述一下这个问题?
背景:在评论串(Benjamin Lindley回答这个问题)中,我被piotr的评论和James Kanze的评论两次惊呆了。
第一次是从piotr的评论中得知:
“对于有符号类型进行右移位是未定义的行为”。
第二次是从James Kanze的评论中得知:
“当将值赋给long型变量时,如果该值不能适应long型变量,则结果是实现定义的”。
在我查看标准之前,我不得不查明它们的意思。它们存在的唯一原因是为了适应非2的补码整数表示方式。为什么?
背景:在评论串(Benjamin Lindley回答这个问题)中,我被piotr的评论和James Kanze的评论两次惊呆了。
第一次是从piotr的评论中得知:
“对于有符号类型进行右移位是未定义的行为”。
第二次是从James Kanze的评论中得知:
“当将值赋给long型变量时,如果该值不能适应long型变量,则结果是实现定义的”。
在我查看标准之前,我不得不查明它们的意思。它们存在的唯一原因是为了适应非2的补码整数表示方式。为什么?