C语言数据类型的定义

2023-03-07 14:15:17 浏览数 (1)

数据类型的定义

1、数据类型的定义

变量的定义:

数据类型 变量名【标识符】

变量的赋值:

变量名 = 值;

数据类型 变量名【标识符】 = 值

标示符的命名规则:

1、字母、数字、下划线

2、不能以数字开头

3、见名知义

4、不能和同一函数内的其他标示符重复

5、不能使用C语言关键字

6、区分大小写

标示符:

ABC

abc

—abc

_abc.

123_bac

a_b_123

常量的定义:

1、const 数据类型 常量名

2、【宏定义】#deifne 常量名 值

注意:

1、通过#define 定义的常量 是根据值来匹配数据类型的

2、const 修饰的常量是不安全 可以通过指针来修改

2、进制:
注意:
  • 进制数以自己的进制表示是数字本身
代码语言:javascript复制
进制数以自己的进制表示是数字本身
//十进制数10
	int a=11;
	printf("%dn",a);
>>>>>>>>>>11
  
	//八进制
	int b=011;
	printf("%on",b);
>>>>>>>>>>11
  
	//十六进制
	int c=0X21;
	printf("%xn",c);
>>>>>>>>>>>21
-------------------------------------------------------------------
  //十进制数10
	int a=11;
	printf("%xn",a);
	//八进制
	int b=011;
	printf("%xn",b);
	//十六进制
	int c=0X21;
	printf("%xn",c);

>>>>>>>>>
b
9
21
二进制:

​ 二进制逢二进一,所有的数组是0、1组成

十进制转二进制:

除二反序取余法:将十进制数每次除以2 取出余数 按照结果倒叙依次获取结果

二进制转十进制:

权值法:将二进制数各个位数从0位开始乘以2的N幂 将各个位数的结果相加

八进制:

​ 八进制逢八进一,所有的数组是0到7组成

十进制转八进制:

除八反序取余法:将十进制数每次除以8 取出余数 按照结果倒叙依次获取结果

十六进制:

​ 十六进制逢十六进一,所有的数组是0到9和A到F组成 字母不区分大小写

十进制转八进制:

除十六反序取余法:将十进制数每次除以16 取出余数 按照结果倒叙依次获取结果

8421法则:

将各个位数的二进制用十进制中的【数字 】来表示多位的二进制数 通过【数字 】相加就可以得到二进制数的数据

8 1000

4 100

2 10

1 1

1000

100

​ 10

​ 1

————

1 1 1 1

进制在程序中打印:

int a=10;//十进制中的10

int b=010;//八进制中的10 在程序中定义一个八进制数需要在数前面加上0区分

int c=0x10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0x区分

int d=0X10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0X区分

注意:在程序中没有办法表示一个二进制数

%d 将数据按照十进制输出

%o将数据按照八进制输出

%x将数据按照十六进制小写输出

%X将数据按照十六进制大写输出

3、原码、反码、补码

一个有符号的整型数据可以分为两部分一部分是符号位、一部分是数字位

无符号数据类型只包含数字位部分

signed int a= 1986(有符号标识 signed可以不用写)

二进制:11111000010

1986原码:0000 0000 0000 0000 0000 0111 1100 0010

-1986原码:1000 0000 0000 0000 0000 0111 1100 0010

1986反码: 0000 0000 0000 0000 0000 0111 1100 0010

-1986反码:1111 1111 1111 1111 1111 1000 0011 1101

1986补码: 0000 0000 0000 0000 0000 0111 1100 0010

-1986反码:1111 1111 1111 1111 1111 1000 0011 1110

​ 1 0000 0000 0000 0000 0000 0000 0000 0000

溢出:在数据进行操作的时候会导致超出数据类型大小,会向前位进1,多于原始数据类型大小,会被系统自动舍弃 保留从后面开始数据类型大小的位数

10 20

0000 1010

0001 0100

0001 1110

-10±20

原码:1000 1010

反码:1111 0101

补码:1111 0110

原码:1001 0100

反码:1110 1011

补码:1110 1100

​ 1111 0110

​ 1110 1100

补码:1110 0010

反码:1110 0001

原码:1001 1110 16 8 4 2=-30

练习:用生辰年份年去生辰日期(??)

1992

-326

1、将10进制转化为二进制

​ 1992 :0000 0000 0000 0000 0000 0111 1100 1000

​ -326 :0000 0000 0000 0000 0000 0001 0100 0110

2、加符号位将数据变为原码

​ 1992 :0000 0000 0000 0000 0000 0111 1100 1000

​ -326 :1000 0000 0000 0000 0000 0001 0100 0110

3、转化为反码

​ 1992 :0000 0000 0000 0000 0000 0111 1100 1000

​ -326 :1111 1111 1111 1111 1111 1110 1011 1001

4、将反码 1转化为补码

​ 1992 :0000 0000 0000 0000 0000 0111 1100 1000

​ -326 :1111 1111 1111 1111 1111 1110 1011 1010

5、计算补码

​ 1992 :0000 0000 0000 0000 0000 0111 1100 1000

​ -326 :1111 1111 1111 1111 1111 1110 1011 1010

​ 结果 : 1 0000 0000 0000 0000 0000 0110 1000 0010

6、将数据转化为10进制

110 1000 0010

2 128 512 1024 = 1666

无符号:

unsigned int a= 1986

无符号:1111 1111 1111 1111 1111 1111 1111 1111 =

​ 0000 0000 0000 0000 0000 0000 0000 0000 =0

无符号整型取值:0-4294967295(2^32-1)

无符号的字符型:0-255

有符号:

​ int a= 1986

​ 0111 1111 1111 1111 1111 1111 1111 1111 = 2147483647

​ 0000 0000 0000 0000 0000 0000 0000 0001

原码: 1111 1111 1111 1111 1111 1111 1111 1111 = -2147483647

反码:1000 0000 0000 0000 0000 0000 0000 0000

补码:1000 0000 0000 0000 0000 0000 0000 0001=-2147483647

-0的补码

补码:1000 0000 0000 0000 0000 0000 0000 0000=-0 = -2147483648

4、sizeof()

求出数据类型在内存中占的大小(BYTE)

int value =sizeof(变量名);

int value = sizeof(数据类型) sizeof 数据类型

注意:根据32位操作系统获取的数据类型大小

char(字符型)【1】<short(短整型)【2】

<=int(整型)【4】|float (单精度浮点型)【4】|long(长整型)【4】

<long long(长长整型)【8】|double(双精度浮点型)【8】

输出和输入:

输出字符的两种方式:

1、printf("%c",变量)

2、putchar(字符)

输入字符的两种方式:

1、scanf("%c",&b变量)

2、变量=getchar()

char 1B=8bit

0x7f

0111 1111

0000 0010

1000 0001

1000 0000

1111 1111 -127

0xff

1111 1111

0000 0001

1 0000 0000

5、数据类型:

字符型:

char 用于存储一个单一的字符

在格式化输入printf("%c",变量)通过占位符%c来接收的

每一个char类型都对应在ASCII中有具体的值

例如:数字【0】对应的ASCII值为48

字母【A】对应的ASCII值为65

字母【a】对应的ASCII值为97

转义字符:

计算机会使用一些字符来完成程序设计,如果在编程中想使用这些字符的本意,需要通过【】来转义

注意:想在控制台中输出% 需要使用【%%】

浮点型:

float 用于存储带有小数的数据

在格式化输入printf("%f",变量)通过占位符%f来接收的

double 用于存储带有小数的数据 数据长度比float更长

注意:因为将小数转化为二进制时不是一个精确的值,所以浮点型都会有数据偏差

0 人点赞