C语言基础第一章:基本数据类型
作者:互联网
整体思维导图
1.基本数据类型
1.1.整型
1、整型内部结构原理
定义一个int 2,也就是系统自动申请4个字节的内存来存储这个2,对于32位而言,整型的取值范围就是0 ~ 2^31-1(正数),无符号整型原理如下图所示:
负数同理可知,它的取值范围是-2^31-1 ~ 2^31-1,但是负数的存储过程是补码,也就是取反再+1,如下图所示:
代码如下:
1.2.字符
字符其实就是用来存放整型的,比如字符‘A’其实就是ASCII 65,也就是存放ASCII,代码如下
1.3.浮点型
Float,直接上代码
1.4.布尔型
1.5.可移植性数据类型
比如在两个不同平台当中,int一个平台代表2字节,另一个平台int代表4字节,那么就可以通过我们的关键字typdef来定义,相当于就多了一个中间层
上图所示,int32_t就是我们的中间层,通过定义int32_t j;在A平台则代表定义的是long j,在B平台代表int j;他们都是4个字节,这就是跨平台的可移植性。如果就单纯的定义一个int i;则不具备可移植性
1.6.字符串
(1)字符数组
字符串其实就是字符数组,比如一个字符串是”abc”,那么它的内部原理如下图所示,也就是占4个字节,因为有个结束标志‘\0’,如果是空的也会占一个字节,也就是‘\0’。
常用的字符串也就是一维数组,比如char str[] = “abc”;
(2)字符指针
指针就是用来指向数组的首地址,如下图所示,定义了一个char *p,p就是指向数组的首地址,也就是‘a’的地址,假设’a’的地址为0x123,那么P就是0x123。如果p=“abc”+1,那么p就是地址+1,也就是指向了‘b’,也就是0x124
2 printf和scanf的使用
2.1.printf四种用法:
1.printf("字符串");
2.printf("输出控制符\n",输出参数);
3.printf("输出控制符1 输出控制符2...",输出参数1,输出参数2...);
4.printf("输出非控制符 输出控制符1",输出参数);
scanf用法:
scanf不要用\n,如果是数组或字符,不用取地址符
2.2.关于printf输出缓存问题:
有\n会马上输出
结束时会马上打印
输出缓冲区满时
有输入请求时,即scanf,也会立即打印到屏幕上
2.3.scanf
Scanf是获取用户输入,比如需要从键盘输入100,那么最先获取到这个数据的是内核的键盘驱动,然后内核再将数据给到user的标准IO缓冲区中,最后才是scanf来获取数据。
scanf比较挑剔,定义什么类型的数据就获取什么类型的数据,而getchar是每次只拿一个数据,不管是什么数据类型。
代码如下:
标签:输出,字节,控制符,scanf,数据类型,第一章,printf,C语言,就是 来源: https://blog.csdn.net/weixin_42108484/article/details/113400544