c - C 中变量的标准字节大小?

标签 c variables memory stdint

因此,我正在用 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/

相关文章:

c++ - 为什么这个字符数组包含未填充的内存?

c - 无论 malloc 大小如何,strcpy 都能正常工作吗?

javascript - 使用 JavaScript 进行多个左手赋值

c# - 匿名类型(类特性)

java - "NegativeArraySizeException"- 自定义类加载器

c++ - 内存分配 - 进程树的公共(public)内存

c - 欧拉计划问题# 276 - 原始三角形

C:将 token 存储在不断增长的数组中

c++ - 为什么 C/C++ 字符串文字声明必须是单行的?

powershell - 导出模块变量名称的命名约定