# 3.C语言整型数据

整型量包括整型常量、整型变量。

## 整型常量的表示方法

整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制三种。

1) 十进制整常数

十进制整常数没有前缀。其数码为0~9。

以下各数是合法的十进制整常数:237、-568、65535、1627;

以下各数不是合法的十进制整常数:023 (不能有前导0)、23D (含有非十进制数码)。

在程序中是根据前缀来区分各种进制数的。因此在书写常数时不要把前缀弄错造成结果不正确。

2) 八进制整常数

八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。

以下各数是合法的八进制数:015(十进制为13)、0101(十进制为65)、0177777(十进制为65535);

以下各数不是合法的八进制数:256(无前缀0)、03A2(包含了非八进制数码)、-0127(出现了负号)。

3) 十六进制整常数

十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。

以下各数是合法的十六进制整常数:0X2A(十进制为42)、0XA0 (十进制为160)、0XFFFF (十进制为65535);

以下各数不是合法的十六进制整常数:5A (无前缀0X)、0X3H (含有非十六进制数码)。

4) 整型常数的后缀

在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。

例如:

* 十进制长整常数:158L (十进制为158)、358000L (十进制为358000);

* 八进制长整常数:012L (十进制为10)、077L (十进制为63)、0200000L (十进制为65536);

* 十六进制长整常数:0X15L (十进制为21)、0XA5L (十进制为165)、0X10000L (十进制为65536)。

长整数158L和基本整常数158 在数值上并无区别。但对158L,因为是长整型量,C编译系统将为它分配4个字节存储空间。而对158,因为是基本整型,只分配2 个字节的存储空间。因此在运算和输出格式上要予以注意,避免出错。

无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。例如:358u、0x38Au、235Lu均为无符号数。

前缀,后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。

## 整型变量

1) 整型数据在内存中的存放形式

如果定义了一个整型变量i:

~~~

int i;

i=10;

~~~

![整型变量](http://www.lvtao.net/content/uploadfile/201404/318825b1ac26fe59be2ed9987c1078cc20140421033719.gif)

数值是以补码表示的:

* 正数的补码和原码相同;

* 负数的补码:将该数的绝对值的二进制形式按位取反再加1。

例如:求-10的补码:

![](http://www.lvtao.net/content/uploadfile/201404/6c629df28a4a54193e01adb9c406d64520140421033719.gif)

由此可知,左面的第一位是表示符号的。

2) 整型变量的分类

1. 基本型:类型说明符为int,在内存中占2个字节。

2. 短整量:类型说明符为short int或short。所占字节和取值范围均与基本型相同。

3. 长整型:类型说明符为long int或long,在内存中占4个字节。

4. 无符号型:类型说明符为unsigned。

无符号型又可与上述三种类型匹配而构成:

* 无符号基本型:类型说明符为unsigned int或unsigned。

* 无符号短整型:类型说明符为unsigned short。

* 无符号长整型:类型说明符为unsigned long。

各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。

![](http://www.lvtao.net/content/uploadfile/201404/a93b558ad7d76fabb5423c817b3f341a20140421033720.gif)

下表列出了C语言中各类整型量所分配的内存字节数及数的表示范围。

| 类型说明符 | 数的范围 | 字节数 |

|---|---|---|

| int | -32768~32767           即-215~(215-1) | 2 |

| unsigned int | 0~65535              即0~(216-1) | 2 |

| short int | -32768~32767           即-215~(215-1) | 2 |

| unsigned short int | 0~65535              即0~(216-1) | 2 |

| long int | -2147483648~2147483647即-231~(231-1) | 4 |

| unsigned long | 0~4294967295         即0~(232-1) | 4 |

以13为例:

![](http://www.lvtao.net/content/uploadfile/201404/db3a765f96f72c85a64ace315ef729c120140421033720.gif)

3) 整型变量的定义

变量定义的一般形式为:

类型说明符  变量名标识符,变量名标识符,...;

例如:

~~~

int a,b,c; /* a,b,c为整型变量 */

long x,y; /* x,y为长整型变量 */

unsigned p,q; /* p,q为无符号整型变量 */

~~~

在书写变量定义时,应注意以下几点:

* 允许在一个类型说明符后,定义多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。

* 最后一个变量名之后必须以“;”号结尾。

* 变量定义必须放在变量使用之前。一般放在函数体的开头部分。

【例3-2】整型变量的定义与使用。

~~~

main(){

int a,b,c,d;

unsigned u;

a=12;b=-24;u=10;

c=a+u;d=b+u;

printf("a+u=%d,b+u=%d\n",c,d);

}

~~~

4) 整型数据的溢出

【例3-3】整型数据的溢出。

~~~

main(){

int a,b;

a=32767;

b=a+1;

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

}

~~~

![](http://www.lvtao.net/content/uploadfile/201404/de7f3a5d3a9a583fa9cb5cf35351df7720140421033720.gif)

【例3-4】

~~~

main(){

long x,y;

int a,b,c,d;

x=5;

y=6;

a=7;

b=8;

c=x+a;

d=y+b;

printf("c=x+a=%d,d=y+b=%d\n",c,d);

}

~~~

从程序中可以看到:x、y是长整型变量,a、b是基本整型变量。它们之间允许进行运算,运算结果为长整型。但c、d被定义为基本整型,因此最后结果为基本整型。本例说明,不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。有关类型转换的规则将在以后介绍。

3字节转换为有符号整型C语言,3.C语言整型数据相关推荐

  1. php无符号整数转有符号整数,PHP中把有符号整型转换为无符号整型方法_PHP教程...

    PHP中把有符号整型转换为无符号整型方法 这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与I ...

  2. php 有符号整数,PHP中把有符号整型转换为无符号整型方法

    这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与ID的相互映射的算法,当ID超过214748 ...

  3. Java字节转换为比特位及相关

    文章目录 字节转换为比特位字串 直接上代码: 测试: 说明: 字节(byte).比特位.整型(int) 原码.反码和补码 移位运算符 >> 有符号,右移 >>> 无符号, ...

  4. C语言(二)— 整型

    编程进阶- C语言(二)- 整型 整型 在C语言中,整型数据一般用short.int.long三种数据类型来声明,int是C语言中常用的声明整形数据的数据类型,在现代的操作系统中,一般是占4字节(By ...

  5. java中true转换为int_在Java中将字节转换为int的最优雅的方式

    示例代码: int a = 255; byte b = (byte) a; int c = b & 0xff; // Here be dragons System.out.println(a) ...

  6. C语言实现字符串转整型

    C语言实现字符串转整型 要求 了解 基本思想 代码 求10的n次方函数 字符串s转换为整型函数 所有代码 不足 要求 1.输入中只包含正负号和数字. 2.正负号只只出现在首位. 了解 (1)负号Asc ...

  7. python中整型_实例介绍Python中整型

    实例介绍Python中整型 Python中有以下几个基本的数据类型: 整数 int 字符串 str 浮点数 float 集合 set 列表 list 元组 tuple 字典 dict 布尔类型 boo ...

  8. 负数转换为无符号数据类型的理解及应用

    负数转换为无符号类型数据的理解及应用 负数转换为无符号数据类型的理解及应用 有符号整型和无符号整型的转换 有符号类型和无符号类型的转换应用实例 参考文献 负数转换为无符号数据类型的理解及应用 网上有大 ...

  9. C语言​-----格式字符、整型、字符型、浮点型

    1.格式字符​ 格式字符是由"%"和字符组成,其作用是将输出的数据转化为指定的格式输出. 格式字符表如下: %d/%i 有符号的十进制整数,i 是老式写法 %u 无符号十进制整数 ...

最新文章

  1. Genetic Algorithm遗传算法,两个代码实现例子
  2. 汤家凤高等数学基础手写笔记-定积分
  3. sturts2标签判断多个条件
  4. 晴天php下载,x.php · 一步晴天/smart - Gitee.com
  5. php写简单接口_php写接口的日常
  6. ORA-02298: 无法验证 (约束) - 未找到父项关键字 解决办法
  7. request对象的常用属性与方法-103.课时103.【Django视图高级】HttpRequest对象讲解(Av61533158,P103)
  8. 第2小节,深入剖析gym环境构建
  9. 动态PHP查看新闻,PHP_用文本文件实现的动态实时发布新闻的程序,动态实时发布新闻的程序,可 - phpStudy...
  10. vue 插槽 有名插槽
  11. C/C++中的联合 union
  12. 你必须了解的基础的 Linux 网络命令
  13. java输出回文数原代码_C++编程入门:判断回文数
  14. WeUI首页、文档和下载 - 专为微信设计的 UI 库 - 开源中国社区
  15. 禅道类似软件_整理几款开源项目管理软件
  16. LOGO与BASIC语言编程入门pdf
  17. 2019年个人年终总结
  18. 如何利用github打造博客专属域名
  19. 服务器系统获取最高权限,webshell+serv-u获取系统最高权限
  20. Nuscenes SOTA!LOPR: 使用生成模型进行潜在occupancy预测

热门文章

  1. linux 文件拷贝io,NIO拷贝文件真的比IO拷贝文件效率高?
  2. 树形菜单 php,简单的树形菜单_php
  3. java8编译_为什么在Java7中编译而在Java8中编译?
  4. Prometheus + Granafa 构建高大上的MySQL监控平台
  5. 云原生收购潮:思科计划收购Portshift;Kasten加入Veeam
  6. 每日一皮:完美解释 UDP 为什么会丢包...
  7. 每日一皮:程序员最讨厌的四件事!
  8. 面试: String 五连杀 !你还满血吗 ?
  9. 赠书|零压力入门算法的顶流畅销书《漫画算法》
  10. c语言检测四个方向键盘输入,如何既检测鼠标单击又检测键盘输入