3

所以,我正在用 C 编写一个 ye olde SHA1 算法的实现(我知道它不安全,它是针对 Matasano 问题的),并且对于某些变量来说,它们的长度正好是 32 位是非常重要的。读过unsigned long int标准的 32 位后,我就使用了它,然后花了 4 个小时试图找出为什么我的哈希值都错了,直到我想看看结果是什么sizeof(unsigned long int)。剧透,它是64。

现在当然我正在使用uint32_t,并且将来总是会使用,但是有人(最好是比我有更多自由裁量权和更少轻信的人)请指出我在哪里为现代 C 写下了可变大小的实际标准? 或者告诉我为什么这个问题被误导了,如果是的话?

4

1 回答 1

2

最小尺寸为:

  • char- 8 位
  • short- 16 位
  • int- 16 位
  • long- 32 位
  • long long- 64 位

没有最大大小,编译器编写者选择他们认为最适合目标平台的任何内容。相应的无符号类型具有相同的最小大小。

于 2015-12-17T02:54:20.443 回答