C语言整数类型的存储空间和取值范围

news/2024/9/22 19:24:00

C语言整数类型的存储空间和取值范围

  1. 四种整数类型 char, short, int, long 默认有符号,再加上无符号限制,共8种情况
              char // 字符型,单字节,取值范围:CHAR_MIN - CHAR_MAXunsigned char // 无符号字符型,  取值范围:0 - UCHAR_MAXshort int // 短整型,双字节,取值范围:SHRT_MIN - SHRT_MAX
unsigned short int // 无符号短整型,  取值范围:0 - USHRT_MAXint // 整型,四字节,  取值范围:INT_MIN - INT_MAXunsigned int // 无符号整型,    取值范围:0 - UINT_MAXlong int // 长整型,八字节,取值范围:LONG_MIN - LONG_MAXunsigned long int // 无符号长整型,  取值范围: 0 - ULONG_MAX

在Linux下测试发现long long,即长长整型与long长整型所表达的效果是一样的!!!

  1. 写代码输出整数类型的存储空间和取值范围相关信息
    注意:相关的宏定义在limits.h头文件中,要包含进来!
/* filename: limits.c */
#include <stdio.h>
#include <limits.h>/*compile : gcc limits.c -o limitsrun : ./limits
*//* output datatype char, short, int, longsizeof, min, max, unsigned max information */
void
out_smmu_info (void)
{printf ("Sizeof char is %lu\n", sizeof (char));printf ("Min char is %d\n", CHAR_MIN);printf ("Max char is %d\n", CHAR_MAX);printf ("Max unsigned char is %u\n", UCHAR_MAX);printf ("--------------------------------\n");printf ("Sizeof short is %lu\n", sizeof (short));printf ("Min short is %d\n", SHRT_MIN);printf ("Max short is %d\n", SHRT_MAX);printf ("Max unsigned short is %u\n", USHRT_MAX);printf ("--------------------------------\n");printf ("Sizeof int is %lu\n", sizeof (int));printf ("Min int is %d\n", INT_MIN);printf ("Max int is %d\n", INT_MAX);printf ("Max unsigned int is %u\n", UINT_MAX);printf ("--------------------------------\n");printf ("Sizeof long is %lu\n", sizeof (long));printf ("Min long is %ld\n", LONG_MIN);printf ("Max long is %ld\n", LONG_MAX);printf ("Max unsigned long is %lu\n", ULONG_MAX);printf ("--------------------------------\n");
}/* output char, short, int, longmin, max, unsigned max value, define myself use hex */
void
out_selfdef_info (void)
{printf ("Self def: CHAR_MIN ==> 0X80, %d\n", (char)(0X80));printf ("Self def: CHAR_MAX ==> 0X7F, %d\n", (char)(0X7F));printf ("Self def: UCHAR_MAX ==> 0XFF, %u\n", (unsigned char)(0XFF));printf ("-------------------------------------------------------\n");printf ("Self def: SHORT_MIN ==> 0X8000, %d\n", (short)(0X8000));printf ("Self def: SHORT_MAX ==> 0X7FFF, %d\n", (short)(0X7FFF));printf ("Self def: USHORT_MAX ==> 0XFFFF, %u\n", (unsigned short)(0XFFFF));printf ("-------------------------------------------------------\n");printf ("Self def: INT_MIN ==> 0X80000000, %d\n", (int)(0X80000000));printf ("Self def: INT_MAX ==> 0X7FFFFFFF, %d\n", (int)(0X7FFFFFFF));printf ("Self def: UINT_MAX ==> 0XFFFF, %u\n", (unsigned int)(0XFFFFFFFF));printf ("-------------------------------------------------------\n");printf ("Self def: LONG_MIN ==> 0X8000000000000000, %ld\n",(long)(0X8000000000000000));printf ("Self def: LONG_MAX ==> 0X7FFFFFFFFFFFFFFF, %ld\n",(long)(0X7FFFFFFFFFFFFFFF));printf ("Self def: ULONG_MAX ==> 0XFFFFFFFFFFFFFFFF, %lu\n",(unsigned long)(0XFFFFFFFFFFFFFFFF));printf ("-------------------------------------------------------\n");
}/**/
int
main (int argc, char *argv[])
{out_smmu_info ();out_selfdef_info ();return 0;
}
/* --(:-:)-- */
  1. 编译运行,输出结果如下:
gwsong@ubuntu:~/works/zoo/tmp$ gcc limits.c -o limits
gwsong@ubuntu:~/works/zoo/tmp$ ./limits
Sizeof char is 1
Min char is -128
Max char is 127
Max unsigned char is 255
--------------------------------
Sizeof short is 2
Min short is -32768
Max short is 32767
Max unsigned short is 65535
--------------------------------
Sizeof int is 4
Min int is -2147483648
Max int is 2147483647
Max unsigned int is 4294967295
--------------------------------
Sizeof long is 8
Min long is -9223372036854775808
Max long is 9223372036854775807
Max unsigned long is 18446744073709551615
--------------------------------
Self def: CHAR_MIN ==> 0X80, -128
Self def: CHAR_MAX ==> 0X7F, 127
Self def: UCHAR_MAX ==> 0XFF, 255
-------------------------------------------------------
Self def: SHORT_MIN ==> 0X8000, -32768
Self def: SHORT_MAX ==> 0X7FFF, 32767
Self def: USHORT_MAX ==> 0XFFFF, 65535
-------------------------------------------------------
Self def: INT_MIN ==> 0X80000000, -2147483648
Self def: INT_MAX ==> 0X7FFFFFFF, 2147483647
Self def: UINT_MAX ==> 0XFFFF, 4294967295
-------------------------------------------------------
Self def: LONG_MIN ==> 0X8000000000000000, -9223372036854775808
Self def: LONG_MAX ==> 0X7FFFFFFFFFFFFFFF, 9223372036854775807
Self def: ULONG_MAX ==> 0XFFFFFFFFFFFFFFFF, 18446744073709551615
-------------------------------------------------------
  1. 用十六进制自定义取值范围清晰明了,不同情况下可以选择不同长度的整数数据类型
    下一步研究一下其他数据类型的存储长度和相关信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/63437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

[网鼎杯 2020 朱雀组]Nmap

这题考察的是nmap写一句话木马的知识 可以输入形如 <?php eval($_POST[1]);?> -oG 1.php 来写入一句话 经过测试这题过滤了php,我们就是用短标签绕过 -oG b.phtml ` 这段命令的作用是:将扫描结果保存到b.phtml中,同时这个phtml文件还包含了前面的一句话木马 目的就是…

电力煤矿液体泄漏识别系统

电力煤矿液体泄漏识别系统对电力煤矿危化品生产区域管道机械实时检测,当电力煤矿液体泄漏识别系统检测到机械管道出现液体泄漏时,系统立即抓拍存档并告警同步回传给报警信息给后台监控人员,让工作人员及时处理,电力煤矿液体泄漏识别系统实现危险区域跑冒滴漏异常自动监控抓…

河道水尺水位监测系统

河道水尺水位监测系统利用计算机视觉技术对河道湖泊水尺水位进行7*24小时全天候实时监测,当河道水尺水位监测系统监测到河道水位异常变化时,系统立即抓拍存档同步回传图片给后台监控平台,提醒后台工作人员及时处理异常情况,避免更大损失的发生。河道水尺水位监测系统适用于…

7-4DeepFM模型

DeepFM继承了Wide&Deep的主体结构,将高低特征进行融合。其主要创新点有2个。一是将Wide部分替换成了 FM结构,以更有效的捕获特征交互interaction;二是FM中的隐向量 和 Deep部分的 embedding 向量共享权重,减少模型复杂性。推荐系统和广告CTR预估主流模型的演化有两条主…

排水口排水识别系统

排水口排水识别系统基于Python基于YOLOv7深度学习的计算机视觉识别检测算法,排水口排水识别系统赋予传统监测系统智能检测能力提升企业污水排放监督管效率,7*24小时不间断准确判断检测场景内的是否出现排水口排水情况,减少后台监控人员的工作量,减少后台漏报误报产生的失误…

作业区域人数超员预警系统

作业区域人数超员预警系统利用现场已有摄像头对生产作业区域进行全天候不间断实时监测,一旦作业区域人数超员预警系统监测到作业区域人数超员时,立即进行抓拍存档并告知后台监控中心人员,提醒后台人员及时处理避免意外情况发生。作业区域人数超员预警系统对人数超员记录截图…

河道采砂船监测识别系统

河道采砂船监测识别系统通过计算机视觉深度学习技术对河道采砂区域进行实时监测,当河道采砂船监测识别系统监测到有采砂船通过停留非法采砂时,立即抓拍存档触发告警,同步回传给后台通知后台人员及时处理。河道采砂船监测识别系统对河道采砂区域进行7*24小时实时监测有效弥补…

仪表盘读数识别系统

仪表读数识别系统利用现场传统监控摄像头对仪表盘刻度数进行7*24小时实时读取,当仪表盘读数识别系统监测到仪表盘数据异常时,立刻推送给后台相关管理人员,工作人员在第一时间到现场进行处理,避免更大的损失发生。同时,将告警截图和视频保存到数据库形成报表。仪表盘读数识…