1.关键字 sizeof
C语言基本数据类型
以下是C语言基本的数据类型:
定义变量的本质:在内存中开辟一块空间,用来保存数据。
而定义一个变量,是需要类型的,类型决定了变量开辟空间的大小。
认识 sizeof
计算对应一种类型在开辟空间时的大小。
例:
#include int main() { printf("%d\n", sizeof(char)); //1 printf("%d\n", sizeof(short)); //2 printf("%d\n", sizeof(int)); //4 printf("%d\n", sizeof(long)); //4 printf("%d\n", sizeof(long long)); //8 printf("%d\n", sizeof(float)); //4 printf("%d\n", sizeof(double)); //8 return 0; }
输出:
输出: 1 2 4 4 8 4 8
/
那么,sizeof 是不是函数呢?
sizeof 该怎么正确使用呢?
例:
#include int main() { int a = 10; printf("%d\n", sizeof(a)); printf("%d\n", sizeof(int)); //从这里可以看出,sizeof不是函数 printf("%d\n", sizeof a); //错误的//sizeof关键字不能直接计算另一个关键字 //printf("%d\n", sizeof int); return 0; }
输出:
输出:
4
4
4
sizeof 相关扩展:
例:
#include 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 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 int main() { unsigned int b = -20; //系统根据类型开辟空间, //变量初识化的内容转换成二进制直接存储z printf("%u\n", b);//没有符号位,所以取出的是一个很大的值 printf("%d\n", b); return 0; }
输出:
输出:
4294967276
-20
如何快速转换二进制
技巧:
二的几次方就在1后面加几个零,
可以通过这个技巧快速写出二进制数。
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。