Quiet corners hold universes

学习C语言第二天

今天学习了数据类型,变量,内存管理,数据类型占用大小及取值范围等。
课程中的内容通俗易懂,目前下来都能明白。
此外在整个学习流程中,有点缺乏方向了,后续需要了解整体学习内容及流程。
以下是我学习的笔记,欢迎指出错误,轻喷,谢谢。

//数据类型
/*
基本类型→字符型,整型(短整型,整型,长整型,长长整形),浮点型和布尔类型

枚举类型(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

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »