三更之饺子结局是什么:C语言有关负整型数据输出的问题

来源:百度文库 编辑:高校问答 时间:2024/05/10 12:43:06
在教材中看到一到Printf函数在输出-1时,为什么以%o和%x输出会以补码的形式输出,而以%d输出时,而是-1,此时它是用原码吗?
这个问题我也是琢磨了一段时间,初步分析是这个可能的结果,真正的谜底可能就与库函数printf有关,期待高手进一步刨析......
这个问题还没人再讨论吗?

在计算机里面,它始终是以补码形式保存的
只不过用%d输出时,它以原码显示

而8进制和16进制是没有专用的负数表示法的,都是用补码来输出

正好反了.输出-1是用的补码,%o是以8进制输出.%x是以16进制输出.还有个%u是以无符号输出(所输出的数值是以你的机器字长决定的.例:16位机输出的是2的16次方减1).