【问题标题】:printf("%x", -1<<1); --> Printing fffffffe instead of -2 [duplicate]printf("%x", -1<<1); --> 打印 fffffffe 而不是 -2 [重复]
【发布时间】:2021-08-17 08:01:57
【问题描述】:

在此语句中,左移运算符产生值 -2 十进制值...而我们要以十六进制值将其打印出来,它应该再次为 -2 ...但编译器打印 fffffffe 。我在这里错过了什么?

【问题讨论】:

  • %x 接受unsigned int,它不可能打印负数。
  • ... in an hexadecimal value it should be again -2 呃...在 2 的补码机器(所有现代 CPU)中,-2 确实是 0xffffffffe。

标签: c


【解决方案1】:

请使用: printf("%d" , -1

【讨论】:

    【解决方案2】:

    问题在于格式说明符。 试试printf("%d", -1&lt;&lt;1);。 更多关于格式说明符的信息在这里:https://www.geeksforgeeks.org/format-specifiers-in-c/

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 1970-01-01
      • 2016-03-31
      • 2019-05-15
      • 1970-01-01
      • 2012-01-10
      • 2017-08-29
      • 2013-06-16
      • 1970-01-01
      相关资源
      最近更新 更多