前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言进阶指南(4)(数据类型——整数类型详解)

C语言进阶指南(4)(数据类型——整数类型详解)

原创
作者头像
代码小豪
发布2024-06-06 14:47:16
1080
发布2024-06-06 14:47:16
举报
文章被收录于专栏:C语言程序指南C语言程序指南

*欢迎来到博主的专栏C语言进阶指南

博主id:reverie_ly*

C语言将数据分为整数类型和浮点数类型。

变量类型

int用于声明一个整数类型的变量,我们根据变量的实际应用可以使用short int,long int,long long int。

以我们常用的64位系统为例。int类型占用的数位是32位,其中第一个数位是符号位,符号位中0代表正数,1表示负数。所以一个有符号整型的的值域在(- 2147483648~ 2147483647)

整数类型在不同的系统上可以存储的最大值是不同的。我们可以在<limits.h>这个头文件上看到这些类型被设定的最大值。

(这里可以看出char类型的值域是-128~127,short的值域是-32768-32767)

这里给上不同位数的cpu的整数类型的取值范围

如果这个变量不需要符号位我们则使用unsigned修饰。比如unsigned int,unsigned long int ,unsigned short int。

在使用修改过大小的整数类型(非标准int)时,可以省略int,比如long int可以写成long,unsigned long int可以写成unsigned long。

常量类型

常量也是具有数据类型的,当我们给出一个常量时,编译器会根据数的大小来根据short int,unsignedint,int,unsigned,long int,unsigned long int,的顺序适配一个整型类型。我们也可以在常量后面加上字母来强制转换常量数据的类型,比如20就是short int类型的常量,用20L就变成了long类型的常量。如果想将这个数变成无符号数,就使用U将这个常量转换成无符号类型。

如果我们这样写,就会发现vs报出这样的错误警告

说明这个有符号整数类型的常量已经转换成无符号整型。

十进制常量:123 456 789

八进制常量:012 038 048(第一个数位一定是0)

十六进制常量:0xffff,0xa10,0x888(一定要有0x)。

不同类型的格式声明

%d——int类型十进制数

%u——unsigned int类型十进制数

%o——int类型八进制数

%x——int类型的十六进制数

再写短整型数是,在d,o,u,x前面加上h

在写长整数时,在d,o,u,s前面加上一个l(L小写)。

整型的存储形式

在c语言中,有符号整型以三种形式存储在内存中,分别为原码,反码,和补码

原码的第一位为符号码,0为正,1为负

反码是原码除符号位外,所有数取反。

补码为原码加1

正数的原反补码一致。如20的存储形式为

00000000 00000000 00000000 00010100

0x00 00 00 41

负数-10的补码形式为

原码:1000000 00000000 0000000 00001100

反码:1111111 11111111 1111111 11110011

补码:1111111 11111111 1111111 11110110

16进制位:0xff ff ff f6

之所以用补码形式的原因为cpu只支持加法运算。这就需要将减法形式换为加法形式,如1-1需要变成1+(-1)那么原码形式的加法

1:00000000 00000000 00000000 00000001

-1:10000000 00000000 00000000 00000001

结果为:10000000 00000000 00000000 00000010

换算成10进制结果为-2,由此可知原码不适合进行减法运算,而将负数化为补码。原式为

1:00000000 00000000 00000000 00000001

-1:11111111 11111111 11111111 11111111

相加结果为0.

根据上述的存储结果我们发现数据并不是顺位存储的。这时候就要引出储存的模式概念

1、大端储存,把数据的高位储存在低地址中,如0x11223344,在内存中的存储形式为11 22 33 44.

2、小端储存,把数据的低位储存在低地址中,如0xfffffff6储存形式为f6 ff ff ff

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变量类型
  • 常量类型
  • 不同类型的格式声明
  • 整型的存储形式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档