网站备案号怎么放,wordpress编辑器转义,哪几个小说网站做网编拿的钱多,虚拟微信聊天生成器整数是编程中常用的一种数据#xff0c;C语言通常使用int来定义整数#xff08;int 是 integer 的简写#xff09;。
现代操作系统中#xff0c;int 一般占用 4 个字节#xff08;Byte#xff09;的内存#xff0c;共计 32 位#xff08;Bit#xff09;。如果不考虑正…整数是编程中常用的一种数据C语言通常使用int来定义整数int 是 integer 的简写。
现代操作系统中int 一般占用 4 个字节Byte的内存共计 32 位Bit。如果不考虑正负数当所有的位都为 1 时它的值最大为 232-1 4,294,967,295 ≈ 43亿这是一个很大的数实际开发中很少用到而诸如 1、99、12098 等较小的数使用频率反而较高。
使用 4 个字节保存较小的整数绰绰有余会空闲出两三个字节来这些字节就白白浪费掉了不能再被其他数据使用。
我们要让整数占用更多的内存用来表示更大的值比如占用 6 个字节或者 8 个字节。
让整数占用更少的内存可以在 int 前边加 short让整数占用更多的内存可以在 int 前边加 long。
示例
short int a 10;
short int b, c 99;
long int m 12123;
long int n, p 562131;这样 a、b、c 只占用 2 个字节的内存而 m、n、p 可能会占用 8 个字节的内存。
我们也可以将 int 省略只写 short 和 long如下所示
short a 10;
short b, c 99;
long m 102023;
long n, p 562131;这样的写法更加简洁高效。
int 是基本的整数类型short 和 long 是在 int 的基础上进行的扩展short 可以节省内存long 可以容纳更大的值。
short、int、long 是C语言中常见的整数类型其中 int 称为整型short 称为短整型long 称为长整型。
整型的长度
我们在描述short、int、long 类型的长度时只对 short 使用肯定的说法而对 int、long 使用了“一般”或者“可能”等不确定的说法。这种描述的言外之意是只有 short 的长度是确定的是两个字节而 int 和 long 的长度无法确定在不同的环境下有不同的表现。 一种数据类型占用的字节数称为该数据类型的长度。例如short 占用 2 个字节的内存那么它的长度就是 2。
C语言并没有严格规定 short、int、long 的长度只做了宽泛的限制 short 至少占用 2 个字节。int 建议为一个机器字长。32 位环境下机器字长为 4 字节64 位环境下机器字长为 8 字节。short 的长度不能大于 intlong 的长度不能小于 int。它们的长度所占字节数关系为
2 ≤ short ≤ int ≤ longshort 并不一定真的”短“long 也并不一定真的”长“它们有可能和 int 占用相同的字节数。
在 16 位环境下short 的长度为 2 个字节int 也为 2 个字节long 为 4 个字节。
对于 32 位的 Windows、Linux 和 Mac OSshort 的长度为 2 个字节int 为 4 个字节long 也为 4 个字节。
在 64 位环境下不同的操作系统会有不同的结果如下图所示
在PC系统为 Win XP、Win 7、Win 8、Win 10、Mac OS、Linux中short 和 int 的长度都是固定的分别为 2 和 4大家可以放心使用只有 long 的长度在 Win64 和类 Unix 系统下会有所不同使用时要注意移植性。
sizeof 操作符
获取某个数据类型的长度可以使用 sizeof 操作符。
示例
#include stdio.h
int main()
{short a 10;int b 100;int short_length sizeof a;int int_length sizeof(b);int long_length sizeof(long);int char_length sizeof(char);printf(short%d, int%d, long%d, char%d\n, short_length, int_length, long_length, char_length);return 0;
}在 32 位环境以及 Win64 环境下的运行结果为
short2, int4, long4, char1在 64 位 Linux 和 Mac OS 下的运行结果为
short2, int4, long8, char1sizeof 用来获取某个数据类型或变量所占用的字节数如果后面跟的是变量名称那么可以省略( )如果跟的是数据类型就必须带上( )。
注意: sizeof 是C语言中的操作符不是函数所以可以不带( )。
使用不同的格式控制符可以输出不同类型的整数 %hd用来输出 short int 类型hd 是 short decimal 的简写%d用来输出 int 类型d 是 decimal 的简写%ld用来输出 long int 类型ld 是 long decimal 的简写。不同整型的输出
#include stdio.h
int main()
{short a 10;int b 99;long c 9437;printf(a%hd, b%d, c%ld\n, a, b, c);return 0;
}运行结果
a10, b99, c9437注意要将格式控制符和数据类型严格对应起来养成良好的编程习惯。当然如果你不严格对应一般也不会导致错误。
使用%d输出所有的整数类型
#include stdio.h
int main()
{short a 10;int b 99;long c 9437;printf(a%d, b%d, c%d\n, a, b, c);return 0;
}运行结果仍然是
a10, b99, c9437当使用%d输出 short或者使用%ld输出 short、int 时不管值有多大都不会发生错误因为格式控制符足够容纳这些值。
当使用%hd输出 int、long或者使用%d输出 long 时如果要输出的值比较小如上所示情况一般也不会发生错误如果要输出的值比较大就很有可能发生错误例如
#include stdio.h
int main()
{int m 306587;long n 28166459852;printf(m%hd, n%hd\n, m, n);printf(n%d\n, n);return 0;
}在 64 位 Linux 和 Mac OS 下long 的长度为 8的运行结果为
m-21093, n4556
n-1898311220输出结果错误这是因为%hd容纳不下 m 和 n 的值%d也容纳不下 n 的值。
我们在编写程序的时候要特别注意当格式控制符和数据类型不匹配时编译器会给出警告提示程序可能会存在风险。
编译器的警告是分等级的不同程度的风险被划分成了不同的警告等级而使用%d输出 short 和 long 类型的风险较低如果你的编译器设置只对较高风险的操作发出警告那么此处你就看不到警告信息。
如果感觉不错的话请点赞