C语言的数据类型--整型数据

知识点一:整型数据类型

整型数据类型 缺省型 名称
[signed]int int 整型
unsigned int unsigned int 无符号整型
[signed]short[int] short 短整型
unsigned short[int] unsigned short 无符号短整型
[signed]long[int] long 长整型
unsigned long[int] unsigned long 无符号长整型

            以上分类中的表现形式带符号整型可表示正、负整数,无符号的整型只能表示正整数,如unsigned int的取值范围位0~2*32-1

知识点二:整型常量

           在c语言中,整型常量采用3种形式进行表示:

           1)十进制整数,如1024,由0~9构成;

           2)以0开头的八进制整数,如0123,由0~7构成,它等于十进制数83;

           3)以0x开头的十六进制整数,如0x12E2,由0~9,A~F构成;

知识点三:整型变量

          由于在C语言中会为一个整型变量在内存中分配一定长度的储存单元,而储存单元中的位只接受0或1,因此,这个整型变量的数据便以二进制形式进行存放。

          这里一个存储单元等于一个字节,一个字节等于8位。

00000000=0,00000001=1,00000010=2......11111111=255

知识点四:整型数据的存放

           在C语言中,数值是以补码的形式表示的,那么,这里又涉及到正整数的补码和负整数的补码,无符号短整型不能表示负数,并且在C语言中以原码的形式进行表示的。

           原码;  000000000000000=0    111111111111111=2*16-1,即0~65535。

           补码:0                              =+0~+32767(2*15-1)正数32768个。

                      1                              =-1~-32768(-2*15)负数32768个。

             a:正整数的补码就是该数的二进制形式,即补码=原码;

                   如征信数占2个存储单元,求10的补码:

                   1)10的二进制形式位1010;

                   2)10的补码=1010(前面12个0通常省略不写);

             b:负整数的补码;

                   1)数据的绝对值表示为二进制形式;

                    2)最高位符号位为1,表示负数(0表示整数);

                    3)除符号位外的数值取反加1;

              例:求-5的补码;

              1)5的二进制=101,5的原码0000000000000101;

              2)因为是负数,所以最高位符号为1,所以为1000000000000101;

              3)按位取反得111111111111010;

              4)加1得1111111111111011;

知识点五:整型数据占内存的大小

           C标准没有具体规定各种类型数据所占用存储单元的长度,只要求sizeof(short)<=sizeof(int)<=sizeof(long),具体由各编译系统自行决定。

           sizeof是测量类型或变量长度的运算符,可以采用sizeof()函数赖确定自己使用的计算计为数据分配多少字节数,例如下列代码:

#include<stdio.h>
int main()
{
printf("%d,sizeof(int));
printf("%d,sizeof(short));
printf("%d,sizeof(long));
return 0;
}

知识点六:整型变量的定义

          C语言严格遵循强制类型先定义后使用。通过类型定义符,可以定义一个整数类型的变量,定义方法如下:

            【类型定义符】标识符;  如int num;

           在内存中使用4个字节的空间来保存整数数据,这个空间使用名称num来标识。

知识点点七:整型数据的溢出

          1)    只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加;

          2)对无符号整型数据用”%u”格式输出。%u表示用无符号十进制数的格式输出。如:

unsigned short price=50;          //定义price为无符号短整型变量
printf("%u\n",price);             //指定用无符号十进制数的格式输出

          3)对于一个有符号类型的数据,由于其所能表示的数据范围已经界定,如果继续对其进行如“加”的操作便超出了界线,C语言称之为数据溢出,虽然数据溢出不会报错,但不会得到预期结果,例:

#include<stdio.h>
int main()
{
int i=32767;
printf("%d",i+1);
return 0;
}

          结果:-32768,而不是32767

          4)在指定一个变量定义为无符号整型后,不应向它赋予一个负值,否则会得到错误的结果;如:

unsigned short price=-1;   \\不能吧一个负整数存储在无符号变量中
printf("%d\n",price);

          结果:65535,而不是-1

猜你喜欢

转载自blog.csdn.net/m0_73463638/article/details/126686397