栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我可以假设long int的大小始终为4个字节吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我可以假设long int的大小始终为4个字节吗?

除了之外,标准没有关于任何整数类型的确切大小

char
。通常,
long
在32位系统上为32位,在64位系统上为64位。

但是,该标准并未指定 最小 尺寸。从C标准的 5.2.4.2.1节开始:

1
以下给出的值应被适合用于

#if
预处理指令的常量表达式代替。此外,除了
CHAR_BIT
和之外
MB_LEN_MAX
,以下内容应替换为与根据整数提升转换为相应类型的对象的表达式具有相同类型的表达式。
其实现定义的值的大小(绝对值)应等于或大于所示的相同符号。

  • 类型对象的最小值
    long int

LONG_MIN
-2147483647 //-(2 ^ 31-1)

  • 类型对象的最大值
    long int

LONG_MAX
+2147483647 // 2 ^ 31−1

这表示a

long int
必须 至少为32位,但可能更大。在
CHAR_BIT
值为8
的机器上,它的最小字节大小为4。但是,在例如
CHAR_BIT
等于16的机器上,a
long int
可以为2个字节长。

这是一个真实的例子。对于以下代码:

#include <stdio.h>int main (){    printf("sizeof(long) = %zun", sizeof(long));    return 0;}

在Debian 7 i686上的输出:

sizeof(long)= 4

在CentOS 7 x64上的输出:

sizeof(long)= 8

因此,您不能对大小做任何假设。如果需要特定大小的类型,可以使用中定义的类型

stdint.h
。它定义了以下类型:

  • int8_t
    :签名的8位
  • uint8_t
    :无符号8位
  • int16_t
    :有符号16位
  • uint16_t
    :无符号16位
  • int32_t
    :有符号32位
  • uint32_t
    :无符号32位
  • int64_t
    :签名的64位
  • uint64_t
    :无符号64位

所述

stdint.h
报头在标准的第7.20节中描述7.20.1.1,具有精确宽度的类型。该标准指出,这些typedef是可选的,但它们存在于大多数实现中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号