C语言进阶(一):变量的本质

目录

一、基本数据类型

二、有符号与无符号

1、数据类型的最高位用于标识数据的符号

2、如何知道一个数是不是正数?

3、在计算机内部用补码表示有符号数

4、在计算机内部用原码表示无符号数

5、对于固定长度的无符号数

6、当有符号数撞见无符号数

7、错误地使用了unsigned

8、小结

(1)有符号数用补码表示

(2)无符号数用原码表示

(3)unsigned只能修饰整数类型的变量

三、浮点数的秘密

1、内存中的浮点数

(1)浮点数在内存的存储方式为∶符号位,指数,尾数​

(2)浮点数的转换

2、浮点类型的秘密

3、总结

四、类型之间的转换

1、C语言中的数据类型可以进行转换

2、强制类型转换的语法

3、隐式类型转换

4、小结

五、变量属性

1、auto关键字

2、register关键字

3、static关键字

4、实例分析:auto,register, static对比分析

5、extern关键字

6、示例:static和extern

7、小结


一、基本数据类型

  • 变量是一段实际连续存储空间的别名
  • 程序中通过变量来申请并命名存储空间
  • 通过变量的名字可以使用存储空间
  • 数据类型代表需要占用的内存大小
  • 变量的本质是一段内存的别名
  • 变量隶属于某一种数据类型
  • 变量所在的内存大小取决其所属的数据类型

 

 

二、有符号与无符号

1、数据类型的最高位用于标识数据的符号

  • 最高位为1,表明这个数为负数
  • 最高位为0,表明这个数为正数
     

2、如何知道一个数是不是正数?

#include <stdio.h>

int main(void)
{
	int sign = 0;

	char i = -5;
	short j = 5;
	int k = -1;

	printf("%d\r\n", (i & 0x80)!=0);
	printf("%d\r\n", (j & 0x800)!=0);
	printf("%d\r\n", (k & 0x80000000)!=0);
}

利用操作符&(全为1才是1),将数据的最高位与1进行&运算,若为1,则返回1,说明原数为负数。

 

3、在计算机内部用补码表示有符号数

  • 正数的补码为正数本身
  • 负数的补码为负数的绝对值各位取反后加1

4、在计算机内部用原码表示无符号数

  • 无符号数默认为正数
  • 无符号数没有符号位

5、对于固定长度的无符号数

  • MAX_VALUE+1 →MIN_VALUE
  • MIN_VALUE-1 →MAX_VALUE
     

6、当有符号数撞见无符号数

#include <stdio.h>

int main()
{
	unsigned int i = 5;
	int j = -10;
	if(i +j > 0 )
		printf("i + j > 0\n");
    else
    printf("i + j <= 0\n");

    return 0;
}

运算中,有符号数会变成一个正数。

7、错误地使用了unsigned

#include <stdio.h>
int main()
{
	unsigned int i = 0;

	for (i = 9; i >= 0; i--)
	{
		printf("i = %u\n", i);
	}

	return 0;
}

8、小结

(1)有符号数用补码表示

  • 正数的符号位为0
  • 负数的符号位为1

(2)无符号数用原码表示

  • 无符号数没有符号位
  • 无符号数只用于表示正数

(3)unsigned只能修饰整数类型的变量

  • 当无符号数与有符号数混合计算时,会将有符号数转换为无符号数后再进行计算,结果为无符号数。
     

三、浮点数的秘密

1、内存中的浮点数

(1)浮点数在内存的存储方式为∶符号位,指数,尾数

float与double类型的数据在计算机内部的表示法是相同的,但由于所占存储空间的不同,其分别能够表示的数值范围和精度不同。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值