C语言深度解剖-关键字(3)
目录
1.关键字 sizeof
C语言基本数据类型
以下是C语言基本的数据类型:
定义变量的本质:在内存中开辟一块空间,用来保存数据。
而定义一个变量,是需要类型的,类型决定了变量开辟空间的大小。
认识 sizeof
计算对应一种类型在开辟空间时的大小。
例:
#include <stdio.h>
int main()
{
printf("%dn", sizeof(char)); //1
printf("%dn", sizeof(short)); //2
printf("%dn", sizeof(int)); //4
printf("%dn", sizeof(long)); //4
printf("%dn", sizeof(long long)); //8
printf("%dn", sizeof(float)); //4
printf("%dn", sizeof(double)); //8
return 0;
}
输出:
输出:
1
2
4
4
8
4
8
那么,sizeof 是不是函数呢?
sizeof 该怎么正确使用呢?
例:
#include <stdio.h>
int main()
{
int a = 10;
printf("%dn", sizeof(a));
printf("%dn", sizeof(int));
//从这里可以看出,sizeof不是函数
printf("%dn", sizeof a);
//错误的//sizeof关键字不能直接计算另一个关键字
//printf("%dn", sizeof int);
return 0;
}
输出:
输出:
4
4
4
sizeof 相关扩展:
例:
#include <stdio.h>
int main()
{
int* p = NULL;
int arr[10];
int* test[3];
//sizeof 也能求自定义类型
printf("%d n", sizeof(p));//指针
printf("%d n", sizeof(arr));//整个数组
printf("%d n", sizeof(test));//元素是指针的整个数组
return 0;
}
输出:
输出:
4
40
12
2. signed 与 unsigned 关键字
整形在内存的存储
例:
#include <stdio.h>
int main()
{
//任何数据在计算机中都必须被转换成二进制
//原码,反码,补码
//符号位 + 数据位
//有符号正数:原码,反码,补码相同
int a = 10;
//原码 - 00000000 00000000 00000000 00001010
//0x00 00 00 0A
//有符号负数:
int b = -20;
//原码 - 10000000 00000000 00000000 00010100
//反码 - 11111111 11111111 11111111 11101011
//补码 - 11111111 11111111 11111111 11101100
//0xFF FF FF EC
//反码等于原码符号位不变,其它位按位取反
//补码等于反码+1
return 0;
}
而无符号数:
1.原码,反码,补码相同。
2.在内存中直接存储。
例:
#include <stdio.h>
int main()
{
unsigned int b = -20;
//系统根据类型开辟空间,
//变量初识化的内容转换成二进制直接存储z
printf("%un", b);//没有符号位,所以取出的是一个很大的值
printf("%dn", b);
return 0;
}
输出:
输出:
4294967276
-20
如何快速转换二进制
技巧:
二的几次方就在1后面加几个零,
可以通过这个技巧快速写出二进制数。
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。