C语言深度解剖-关键字(3)

简介: C语言深度解剖-关键字(3)

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后面加几个零,


可以通过这个技巧快速写出二进制数。



写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果喜欢本文的话,欢迎点赞和评论,写下你的见解。


如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。


之后我还会输出更多高质量内容,欢迎收看。


相关文章
|
4月前
|
C语言
|
4月前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
5月前
|
存储 C语言
C语言中的typedef关键字:为类型定义新名称
C语言中的typedef关键字:为类型定义新名称
|
5月前
|
C语言
深入探索C语言中的sizeof关键字
深入探索C语言中的sizeof关键字
|
5月前
|
存储 编译器 C语言
C语言中的关键字与标识符详解
C语言中的关键字与标识符详解
118 0
|
6月前
|
存储 C语言
【C语言】数据:数据类型关键字
【C语言】数据:数据类型关键字
|
6月前
|
存储 编译器 C语言
c语言中static关键字的作用
c语言中static关键字的作用
|
6月前
|
编译器 C语言 C++
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(下)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
47 0
|
6月前
|
存储 安全 编译器
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(上)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
48 0
|
6月前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结