不应该0x00000100 = 4。

我了解自2 ^ 0起0x00000001 = 1,自2 ^ 1起0x00000010 = 2。我的想法出了什么问题?

initVariable(&variable1, "variable1", "1, 2, 3", 0x00000100);

assertIntegerEquals(variable1.address, 4); // 0x00000100 = 4?

我的断言失败了,因为它说256!= 4

最佳答案

0x开头的数字在C中解释为十六进制(以16为底)。

因此0x10 == 160x100 == 2560x10000 == 65536

二的幂是:

  • 20 = 0x1
  • 21 = 0x2
  • 22 = 0x4
  • 23 = 0x8
  • 24 = 0x10
  • 25 = 0x20
  • 26 = 0x40
  • 27 = 0x80
  • 28 = 0x100
  • 10-01 21:29