C语言中的无符号数和有符号数(精品·公开课件).pptVIP

  • 16
  • 0
  • 约2.44千字
  • 约 10页
  • 2018-11-05 发布于广西
  • 举报

C语言中的无符号数和有符号数(精品·公开课件).ppt

C语言中的无符号数和有符号数 C语言中无符号数与有符号数比较 对比较结果进行分析 边界数值比较 对比较程序进行测试 测试结果 C语言中无符号数与有符号数比较 无符号数和有符号数是不能进行比较运算的,否则可能会出现意想不到的错误,且极难检查出来!   首先肯几个例子(假设在32位的机器上):   1         1. 0 == 0U   2         2. -1 0U (注: 0是无符号的)   3         3. 2147483647U -2147483647 - 1   4         4. 2147483647 (int) 2147483648U 比较结果 1         1. 1   2         2. 0 *   3         3. 0 *   4         4. 1 *   从结果中可以看出,2 3 4都不是我们想像中的结果。在C语言中,当一个无符号数和一个有符号数进行比较运算时,有符号数会被隐含的转换成无符号数,并假设这两个数都是非负数,然后进行比较运算。当把一个有符号数转换成无符号数时,其底层的二进制表示没有改变,仅仅是对其进行了不同的解释。这样,由于这两个原因就会出现上面的结果。 对比较结果进行分析 首先分析一下2:   -1的二进制补码表示是32个1。而0U的二进制补码表示是32个0.在比较的时候,-1被当做无符号数

文档评论(0)

1亿VIP精品文档

相关文档