因此,我正在用 C 语言编写一个 ye olde SHA1 算法的实现(我知道它不安全,它是针对 Matasano 问题的),对于一些变量来说,它们正好是 32 位长是非常重要的。读到 unsigned long int
是标准的 32 位后,我只是使用它,然后花了 4 个小时试图找出为什么我的哈希值全错了,直到我想看看是什么 sizeof(unsigned long int)
就出来了。扰流板,它是 64。
当然,我现在正在使用 uint32_t
,并且将来会一直使用,但是有人(最好是比我更谨慎、更不容易上当受骗的人)可以指点我在哪里实际可变大小的标准是为现代 C 编写的吗?或者告诉我为什么这个问题被误导了,如果是的话?
最佳答案
最小尺寸为:
char
- 8 位短
- 16 位int
- 16 位long
- 32 位long long
- 64 位
没有最大尺寸,编译器作者选择他们认为最适合目标平台的任何尺寸。相应的无符号类型具有相同的最小大小。
关于c - C 中变量的标准字节大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34325807/