今天学习了数据类型,变量,内存管理,数据类型占用大小及取值范围等。
课程中的内容通俗易懂,目前下来都能明白。
此外在整个学习流程中,有点缺乏方向了,后续需要了解整体学习内容及流程。
以下是我学习的笔记,欢迎指出错误,轻喷,谢谢。
//数据类型
/*
基本类型→字符型,整型(短整型,整型,长整型,长长整形),浮点型和布尔类型
枚举类型(enum)
空类型(void)
派生类型→指针类型,数组类型,结构体类型,共用体类型,函数类型
*/
/* 字符型 char 有三种书写类型
char
[signed] char 有符号 其中signed可以省略
unsigned char 无符号 其中unsigned必须有
*/
/* 整型
short
[signed] short
unsigned short
int
[signed] int
unsigned int
long
[signed] long
unsigned long
long long
[signed] long long
unsigned long long
*/
/* 浮点型
float 单精度
double 双进度
long doubele
*/
/* 布尔型
只有0表示假
*/
#include <stdio.h>
#include <stdbool.h>
//int main()
//{
//char a = 'a';
//unsigned char ch2 = 'b';
//short sh = 10;
//int i = 20; //在这里博哥写的定义a了,会报错,类型不一样也会报错
//long la = 100;
//long long lla = 1000;
//float f = 12.5;
//double d = 12.5;
//long double ld = 12.5;
//printf("%d\n%d\n%d\n%d", 'a', ch2, i, 'i'); //想要看输出是否正确可以加一个打印,记住是字符
//这里打印中,输出的是不一样的,还需注意,此外 单行注释快捷键, 1选中 2ctrl 3/
// _Bool flg = true; //其中_Bool中B必须大写,假为false,
// if (flg)
// {
// printf("this is true!");
// }
// return 0;
//}
//有了数据类型后,我们如何使用数据类型?
//通过类型我们可以定义变量,而变量中可以存储数据
/* 变量
data_type name
数据类型 变量名
*/
/* 变量命名的一般规则
只能由字母,数字和下划线组成
不能由数字开头
长度不能超过63字符
区分大小写
不能用关键字
*/
/* 变量的分类
全局变量 在大括号{}外定义的变量
局部变量 在大括号{}内定义的变量
*/
/* 变量既然是数据,那保存在哪里了,保存在内存中
为什么划分内存,因为存数据和取数据效率高,太乱了就不好找
初步分为三个区
栈区:局部变量
堆区:内存管理等
静态区:全局变量
*/
int local = 10; //全局变量
int gloable = 100; //全局变量
int main()
{
int local = 20; //局部变量
printf("%d\n", local); //变量名一样,先读取局部变量
printf("%d\n", gloable);
printf("%zd\n", sizeof(char)); //1个字节 sizeof返回值是size_t类型,期望通过%zd输出
printf("%zd\n", sizeof(_Bool)); //1个字节 当然%d使用也可以
printf("%zd\n", sizeof(short)); //2个字节
printf("%zd\n", sizeof(int)); //4个字节
printf("%zd\n", sizeof(long)); //4个字节
printf("%zd\n", sizeof(long long)); //8个字节
printf("%zd\n", sizeof(float)); //4个字节
printf("%zd\n", sizeof(double)); //8个字节
printf("%zd\n", sizeof(long double)); //8个字节
return 0;
}
/* 数据类型占用内存大小以及取值范围
数据存储容量或者数据传输速率的基本单位:bit,byte,kb,mb,gb,tb,pb
8 bit = 1 byte
1024 byte = 1 kb
其余的进率都是1024
sizeof关键字可以计算 某个类型或者表达式的长度,单位是字节。
在不同平台下字节大小是不一样的,目前都是x64平台下
*/
// 前缀为[signed]的是有符号类型,只能表示负数,0,正数 范围是-128-127
// signed int a = 'a' 等同于
// int a = 'a'
// 8bit分为八个位置,第一位是符号位,0是正数,1是负数
// 负数在内存中怎么储存? 源码 =》(源码符号位不变,其它位取反)反码 =》(反码加一) 补码
// -1的源码 1000 0001 反码1111 1110 补码1111 1111
// -2的源码 1000 0010 反码1111 1101 补码1111 1110
// 128的源码 1000 0000 反码0111 1111 补码1000 0000 128比较特殊
//
// 前缀为unsigned的为无符号类型只能表示 0,正数 范围是0-255
评论 (1)