C语言中基本整型数据类型

2023-11-13

为了更好的分享体验,博客搬迁至极客驿站 ,欢迎查阅

C语言中的基本整型数据类型

整型家族包括字符、短整型、整型、长整型,它们都分为有符号和无符号两种版本

整型值相互之间的大小的规则:

长整型至少应该和整型一样长,而整型至少应该和短整型一样长

一般情况下各种类型在32、64位机上的大小

long,unsigned long pointer为机器全字长,其实也就是这几种类型的大小和CPU的位数是一样的。

下面的程序是在X86架构环境上,使用gcc version 4.7.2 20121109 (Red Hat 4.7.2-8) (GCC)编译得到的

#include <stdio.h>

int main()
{
        printf("the char range is           %-20hhd~%20hhu, size is %u\n", 0x80, 0x7f, sizeof(char));
        printf("the usigned char range is   %-20hhu~%20hhu, size is %u\n", 0x0, 0xff, sizeof(unsigned char));
        printf("the short range is          %-20hd~%20hu, size is %u\n", 0x8000, 0x7fff, sizeof(short));
        printf("the unsigned short range is %-20hu~%20hu, size is %u\n", 0x0, 0xffff, sizeof(unsigned short));
        printf("the int range is            %-20d~%20u, size is %u\n", 0x80000000, 0x7fffffff, sizeof(int));
        printf("the unsigned int range is   %-20u~%20u, size is %u\n", 0x0, 0xffffffff,  sizeof(unsigned int));
        printf("the long range is           %-20ld~%20lu, size is %u\n", 0x80000000, 0x7fffffff, sizeof(long));
        printf("the unsigned long range is  %-20lu~%20lu, size is %u\n", 0x0, 0xffffffff, sizeof(unsigned long));
        printf("the llong range is          %-20lld~%20llu, size is %u\n", 0x8000000000000000, 0x7fffffffffffffff, sizeof(long long));
        printf("the unsigned llong range is %-20lld~%20llu, size is %u\n", 0x0ll, 0xffffffffffffffff, sizeof(unsigned long long));
        printf("default constant size is %u %u %u\n", sizeof('b'), sizeof(0x0), sizeof(0x0ll));
}

运行结果

the char range is           -128                ~                 127, size is 1
the usigned char range is   0                   ~                 255, size is 1
the short range is          -32768              ~               32767, size is 2
the unsigned short range is 0                   ~               65535, size is 2
the int range is            -2147483648         ~          2147483647, size is 4
the unsigned int range is   0                   ~          4294967295, size is 4
the long range is           -2147483648         ~          2147483647, size is 4
the unsigned long range is  0                   ~          4294967295, size is 4
the llong range is          -9223372036854775808~ 9223372036854775807, size is 8
the unsigned llong range is 0                   ~18446744073709551615, size is 8

default constant size is 4 4 8

整型字面值(整型常量)

字面值这个术语是字面值常量的缩写------这是一种实体,指定了自身的值,并且不允许发生改变。

当程序内出现整型常量时,它是属于整型家族类型中的哪一种?答案取决于常量是如何书写的,可以在有些常量的后面添加一个后缀来改变缺省规则。在整数常量后面添加L或l,可以使这个整数被解释为long整型值,字符U或u则用于吧数值指定为unsigned 整型值,如果一个常量后面添加这两个字符中的各一个,那么它就被解释为unsigned long整型值。对于字符常量。它们的类型总是int。不能再它们后面添加unsigned或者long后缀

C语言一般默认整型常量(字符常量/整型常量)类型为int,

如果使用格式字符%llu,printf会认为要输出的这个值的大小为8字节,所以如果对应的参数如果为0x0的话则有可能打印出乱七八糟的东西(因为它读了8个字节而不是4个字节)

另外printf整型变量时,打印的是有符号还是无符号取决于格式字符,与实际传入的参数类型及符号无关。

例如

int i = 0x80001010;

printf("%d\n", i);打印-2147479536 

printf("%u\n", i);打印2147487760

printf("%hu\n",i);打印4112高两位被截断,打印的实际是0x1010

printf("%hhu\n",i);打印16高三位被截断,打印的实际是0x10

所以请谨记使用printf打印变量的大小与符号与变量本身无关,即使强转也不行!应选择对应正确的格式字符

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言中基本整型数据类型 的相关文章

  • vscode插件一draw.io绘图工具

    vscode 插件推荐一draw io 日常工作中需要制作时序图 流程图等 这里推荐的是vscode的插件中draw io 先自行在官网下载vscode https code visualstudio com 安装后打开vscode 如图在
  • c++ map 析构函数_C++核心准则C.36:析构函数不应该失败

    C 36 A destructor may not fail析构函数不应该失败 Reason 原因 In general we do not know how to write error free code if a destructor
  • Crazyswarm framework

    Crazyswarm framework 1 Tools Crazyfile Chooser Simulation sim flag 2 软件架构 使用方法 参考论文 应用的论文 3使用教程 参考网页 配置文件 example 基础 轨迹生
  • k8s 部署dubbo

    docker pull chenchuxin dubbo admin docker tag chenchuxin dubbo admin hub redblue ai com dubbo admin cat lt lt END gt dub

随机推荐

  • sql 数据查询返回值问题

    1 create 返回值 若发生错误 返回false 成功则返回创建的数据 2 add 返回值 addAll 返回值 成功 id或true 失败 false 成功 如果主键是自动增长型 返回值为新增记录Id值 addAll为最大值 否则返回
  • Microsoft Store打不开的解决方案

    Microsoft Store无法打开的解决方案 一 方案一 1 按Win i键 点击 网络和internet 2 转到 代理 关闭 使用代理服务器 3 尝试打开 microsoft store 二 方案二 1 按Win R键 输入inet
  • PHP请求微信接口获取用户电话号

    前言情景剧 业务场景是为了在用户登录的时候判断其是否已经成功注册 没有成功注册的话就将获取到的openid和session key加密后作为token传给前端 然后让前台通过组件获得code之后连着token一起传给后端 后端拿着code再
  • 服务机器人串口配置

    服务机器人串口配置 1 确定串口号 2 查看串口号对应的kernels 3 修改rules 1 确定串口号 如下图 以雷达为了例子 插拔之后 可知串口号为 ttyUSB1 2 查看串口号对应的kernels 3 修改rules 更改KERN
  • 搭建Zerotier内网穿透网络及彻底删除zerotier方法

    搭建Zerotier内网穿透网络 1 注册zerotier账号并登录https my zerotier com 2 访问https my zerotier com network 点击Create a Network 之后再Your Net
  • Java 【基础】 模拟log4j,输出当前语句的行数,和类路径

    一直很好奇log4j 是如何获取到当前输出的行数的 今天学到了 原来是堆栈跟踪 把代码贴出来给大家看一下 模拟log4j public static void debug String string System out println 调
  • declare-styleable的使用

    declare styleable是给自定义控件添加自定义属性用的 可以定义多种类型 int Boolean string等等 参考链接
  • 正则表达式去除冗长代码,tppabs

    利用正则表达式去除网页中的冗长没用代码 1 btppabs h 2 tpa http 3 清除css内的 tpa http s gif png jpg 4 tpa
  • org.springframework.http.converter.HttpMessageNotWritableException

    这里说无法将 对应对象转换 原因在于没有导入json 依赖 所以无法转换 org springframework http converter HttpMessageNotWritableException No converter fou
  • SD/MMC存储器启动方案在SoC中的设计与实现

    原文地址 http blog csdn net allen6268198 article details 7745208 引言 SD MMC存储器以其成本低廉 存储容量大 性能优良 安全性高等特点越来越广泛地应用于便携式设备和家用电子设备
  • Android Studio中设置鼠标悬停显示文档提示方法

    有些小伙伴在开发的过程中可能会习惯使用文档注释 那么在Android Studio中如何设置启用文档注释呢 1 首先打开Android Studio 点击菜单栏中的 File选项菜单 点击如下的Settings 进行设置 2 点击Edito
  • Windows10系统下swin-transformer目标检测环境搭建

    Swin Transformer Object Detection环境搭建 前言 1 环境准备 2 虚拟环境创建 3 安装pytorch 4 安装mmcv 5 安装mmdet 6 安装apex 7 测试 前言 刚搞明白了分类 又进来了检测这
  • 基于 Linux 安装 web 服务及基本配置

    在网络环境中 web 服务无疑是最为流行的应用系统 有了 web 站点 企业可以充分展示自己的作品 宣传企业形象 web 站点还为企业提供了与客户交流 电子商务交易平台等丰富的网络应用 Apache HTTP Server 是 ASF 旗下
  • mycat实现mysql读写分离,热切换,集群

    在互联网时代 实现mysql读写分离 热切换 集群能大大提高mysql数据库访问压力 防止数据丢失 使用mycat能帮我们实现这些 我们要实现的是这种架构 1 Mycat能实现数据库的垂直切分和水平切分 这里用户写数据的时候 通过mycat
  • Linux 上的NetworkManager示例

    如果您是一位经验丰富的系统管理员 并且专注于网络管理 那么您可能已经听说过NetworkManager NetworkManager于 2004 年发布 由 Red Hat 开发 是一组不同的工具 主要是接口 旨在促进系统上的网络管理 如果
  • C - 选票统计

    Description 某校学生会主席由全校学生投票选举产生 共有 名候选人报名参选 编号为1到 0 1000 全校有 名学生 0 30000 每人都可以投票 但每人只能投一票 每票只能选1名候选人 请你设计一个程序能够统计出哪个候选人得票
  • FP-growth算法(仅理解部分,代码待更新)

    FP growth算法 仅理解部分 代码待更新 1 简介 2 构建FP树 2 1 FP树简介 2 2 FP树的构建步骤 2 3 FP树的构建实例 step1 扫描数据集 对所有元素项的出现次数进行计数 step2 去掉不满足最小支持度的元素
  • 【华为OD机试真题2023B卷 JAVA&JS】事件推送

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 事件推送 时间限制 1秒 内存限制 262144K 语言限制 不限 题目描述 同一个数轴X上有两个点的集合A A1 A2 Am 和B B1 B2 Bn Ai和Bj均为正整数 A B已经
  • pikachu之RCE

    pikachu之RCE 一 神魔是RCE RCE漏洞 可以让攻击者直接向后台服务器远程注入操作系统命令或者代码 从而控制后台系统 1 远程系统命令执行 出现原因 因为应用系统从设计上需要给用户提供指定的远程命令操作的接口 比如常见的路由器
  • C语言中基本整型数据类型

    为了更好的分享体验 博客搬迁至极客驿站 欢迎查阅 C语言中的基本整型数据类型 整型家族包括字符 短整型 整型 长整型 它们都分为有符号和无符号两种版本 整型值相互之间的大小的规则 长整型至少应该和整型一样长 而整型至少应该和短整型一样长 一