在了解了进制转换和C语言的整体架构、输入方式之后,接下来我们要理解的是C语言当中的整数的概念和用法。下面课课家笔者就为大家介绍C语言中的整数(short,int,long)。

在我们编程的过程中整数是我们常用的一种数据,而在C语言中通常使用int来定义整数(int是integer的简写)。在当今操作系统中int一般占用4个字节内存,共计32位(Bit)。如果我们不考虑正负数,当所有的位都为1时它的值最大,为232-1=4,294,967,295≈43亿,这是一个很大的数,实际开发中很少用到,而诸如1、99、12098等较小的数使用频率反而较高。使用4个字节保存较小的整数绰绰有余,会空闲出两三个字节来,这些字节就白白浪费掉了,不能再被其他数据使用。在C语言被发明的早期或者在单片机和嵌入式中,内存都是非常稀缺的资源,因此所有的程序都在尽力节省内存。反过来说43亿虽然已经很大,但要表示全球人口数量还是不够,必须要让整数占用更多的内存,才能表示更大的值。让整数占用更少的内存可以在int前边加short,让整数占用更多的内存可以在int前边加long,下面笔者举个简单的例子:

short int a = 10;

short int b,c = 99;

long int m = 102023;

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;

这样的写法更加简洁,在实际开发中常常用到。总结起来,C语言中共有三种整数类型,分别是short、int和long。int称为整型,short称为短整型,long称为长整型。

◎整数的长度

在C语言中并没有严格规定short、int、long所占用的字节数,只是做了宽泛的限制:

①short至少占用2个字节。

②int建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。

③short的长度不能大于int,long的长度不能小于int。

总结起来,它们的长度(所占字节数)关系为:short<=int<=long。这说明short并不一定真的”短“,long也并不一定真的”长“,它们有可能和int占用相同的字节数。在16位环境下,short为2个字节,int为2个字节,long为4个字节。16位环境多用于单片机和低级嵌入式系统,在PC和服务器上基本都看不到了。对于32位的Windows、Linux和OSX,short为2个字节,int为4个字节,long也为4个字节。PC和服务器上的32位系统占有率也在慢慢下降,嵌入式系统使用32位越来越多。在64位环境下,不同的操作系统会有不同的结果,具体如下所示(长度以字节计):

①Windows 64位系统: short为2字节、 int为4字节, long为4字节。

②类Unix系统(包括Unix、Linux、OSX、BSD、Solaris等): short为2字节、 int为4字节, long为8字节。

目前我们使用较多的PC系统为WinXP、Win7、Win8、Win10、MacOSX、Linux,short和int的长度都是固定的,分别为2和4,另外long的长度在Windows 64位和类Unix系统下会有所不同,我们使用时要注意移植性。

为了获取某个数据类型的长度我们可以使用sizeof操作符,具体如下所示:

#include

int main()

{

short a = 10;

int b = 100;

long c = 1000;

char d = 'X';

int a_length = sizeof a;

int b_length = sizeof(int);

printf("a=%d,b=%d,c=%d,d=%d\\n",a_length,b_length,sizeof(c),sizeof(char));

return 0;

}

在Win7下的运行结果为:

a=2,b=4,c=4,d=1

sizeof用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略(),如果跟的是数据类型,就必须带上()。需要注意的是,sizeof是C语言中的操作符,不是函数,所以可以不带()。

◎不同进制的整数

C语言中的整数除了可以使用十进制,还可以使用八进制和十六进制。

①八进制。八进制由0~7八个数字组成,使用时必须以0开头(注意是数字0,不是字母o),比如:

//合法的八进制数

int a = 015;//十进制为13

int b = -0101;//十进制为-65

int c = 0177777;//十进制为65535

非法的八进制

int m = 256;//无前缀0,相当于十进制

int n = 03A2;//A不是有效数字

②十六进制。十六进制由数字0~9、字母A~F或a~f组成,使用时必须以0x或0X(不区分大小写)开头,比如:

//合法的十六进制

int a = 0X2A;//十进制为42

int b = -0XA0;//十进制为-160

int c = 0xffff;//十进制为65535

//非法的十六进制

int m = 5A;//无前缀0X

int n = 0X3H;//H不是有效数字

③十进制。十进制由0~9十个数字组成,没有任何前缀,和我们平时的书写格式一样。

PS:C语言中只能使用八进制、十进制和十六进制,不能直接使用二进制,它没有特定的前缀。

◎各种整数的输出

在使用printf输出整数时,不同的控制字符会有不同的输出格式。

①输出int使用%d,输出short使用%hd,输出long使用%ld。具体为下面的例子:

#include

int main()

{

short a = 100;

int b = 010;

long c = 0XFFFF;

printf("a=%hd,b=%d,c=%ld\\n",a,b,c);

return 0;

}

运行结果:

a=100,b=8,c=65535

②输出十进制使用%d,输出八进制使用%o(注意是字母o,不是数字0),输出十六进制使用%x或%X。如果我们希望带上前缀,可以通过添加#,比如%#d、%#o、%#x、%#X。请看下面的例子:

#include

#include

int main()

{

int a = 100,b = 0270,c = 0X2F;

printf("a(d)=%d,d(#d)=%#d\\n",a,a);

printf("a(o)=%o,d(#o)=%#o\\n",b,b);

printf("c(x)=%x,c(#x)=%#x,c(X)=%X,c(#X)=%#X\\n",c,c,c,c);

system("pause");

return 0;

}

运行结果:

a(d)=100,d(#d)=100

a(o)=270,d(#o)=0270

c(x)=2f,c(#x)=0x2f,c(X)=2F,c(#X)=0X2F

此时需要我们注意的地方是,由于十进制数没有前缀,所以%d和%#d的输出结果一样。最后给大家看下任意一整数示例。

本次详解C语言中整数(short,int,long)的教程到此暂告一段落,以后有补充的笔者会继续补充,希望这个教程对大家学习C语言起到一定的帮助。

c语言中short作用,详解C语言中整数(short,int,long)相关推荐

  1. C语言中get_put函数详解,C语言第五课之getchar函数和putchar函数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 getchar函数也就是键盘输入函数,这个函数和scanf函数不一样!getchar函数没有scanf函数灵活.下面就给大家介绍下getchar函数的介绍 ...

  2. c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用

    指针的特点 他就是内存中的一个地址 指针本身运算 指针所指向的内容是可以操作的 操作系统是如何管理内存的 栈空间 4M~8m的大小 当进入函数的时候会进行压栈数据 堆空间 4g的大小 1g是操作系统 ...

  3. c语言关键字extern作用,C语言中extern关键字详解

    <C语言中extern关键字详解>由会员分享,可在线阅读,更多相关<C语言中extern关键字详解(5页珍藏版)>请在人人文库网上搜索. 1.C 语言中 extern 关键字详 ...

  4. c语言中funx的作用,c语言中fun用法详解

    C语言中fun用法详解 fun函数是自定义的C/C++语言函数,函数功能多样.该函数名为"函数"英文function的简写,一般在示例和试题中使用,通常在主函数中被调用. C/C+ ...

  5. java 函数fun_c语言中fun用法详解_后端开发

    Java Dao层的作用_后端开发 Dao层叫数据访问层,属于一种比较底层,比较基础的操作,可以具体到对于某个表或某个实体的增删改查,其Dao层的作用是对数据库的访问进行封装,从而不涉及业务,实现解耦 ...

  6. C语言中const用法详解

    C语言中const用法详解 const修饰普通变量 const作用在于定义一个常量,比如const int a = 10,代表a的值不能被直接修改了,是一个常量,但仍可以通过指针的方式间接修改,如下图 ...

  7. 武林c语言,详解C语言中条件编译

    预处理器提供条件编译,程序的不同部分可以在不同的条件下编译,从而产生不同的目标代码文件,这对于程序移植和调试非常有用,本文是武林技术频道小编给为大家带来的详解中条件编译,一起来了解一下吧! 通常情况, ...

  8. c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用

    详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...

  9. C语言中static关键字详解

    C语言中staic关键字很简单,简单到你的任何一个项目中可以不写一个staic关键字也是没有问题的.写这篇章主要是一下自己的staic的理解和应用,当然在章开头依旧要照本宣科简述一下static关键字 ...

  10. C语言中extern用法详解

    在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用".  1. extern修饰变量的声明. 举例来说,如果文件a.c需要引 ...

最新文章

  1. python使用matplotlib可视化subplots子图、为subplots添加主标题(main title)、为subplots的每一个子图添加子图标题(subplots title)
  2. Go语言int类型绑定方法
  3. Redis笔记系列(特别总结篇)——常见配置redis.conf知识点总结
  4. 1.EXTJS Row Editor Grid 点取消时插入的新行 的解决方法
  5. python卡尔曼滤波跟踪_使用卡尔曼滤波器以圆周运动跟踪机器人
  6. linux内核研究(一)
  7. jvm classLoader 过程
  8. how does {accountID} binding work?
  9. 《WCF技术内幕》翻译31:第2部分_第6章_通道:概述与正确认识通道。
  10. 曼哈顿距离和欧拉距离
  11. 渝粤教育 陕西师范大学 《初级微观经济学》作业
  12. antd radio设置默认选中_单选框radio总结(获取值、设置默认选中值、样式)
  13. 汽车的盲区在哪里?这几张图让你一眼看懂
  14. transformer李宏毅讲解视频及decoder讲解
  15. 【jsp】基础知识总结
  16. opengl画三维点_[500行代码学懂OpenGL]之一画点
  17. Hamcrest 总结
  18. dell服务器无线网卡,dell笔记本内置无线网卡找不到怎么处理
  19. 黑白双色背景图java_黄色背景黑白双色简洁ppt图表
  20. 一元线性回归(R语言)

热门文章

  1. 三星android怎么解锁屏幕旋转,三星S10如何设置打开应用自动旋转屏幕
  2. 全球与中国冲压空气涡轮行业调查与未来发展趋势研究报告
  3. [教程] 如何复活一个完全死机的联发科设备
  4. Django测试文件——tests.py
  5. TYPORA主题更换
  6. 硬件电路设计之VGA ADL5201
  7. android手机的根目录,安卓根目录详解
  8. c语言奖学金评定系统课设报告,C语言编程奖学金评定系统太原理工大学.pdf
  9. 缘,如雁渡寒潭,似风吹疏竹
  10. 互联网产品经理职责及所需能力