【初阶二】认识C语言—上
- 1.数据类型
- 2.变量
- 3.常量
- 4.字符串
- 5.转义字符
- 6.注释
- 7.选择语句
认识C语言讲的是C语言的基础知识,目的是让大家认识这些知识,后续文章会把这些知识深入讲解,知识点很多,篇幅原因分为上下两篇
1.数据类型
每个数据类型都有自己的大小,因此先了解一下计算机的单位
下面就是C语言的数据类型,种类众多的类型目的是方便表示生活中的各种值
在vs2022的源文件中输入以下代码便可查看数据类型的字节数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{printf("%d\n", sizeof(char)); //输出1printf("%d\n", sizeof(short)); //输出2printf("%d\n", sizeof(int)); //输出4printf("%d\n", sizeof(long)); //输出8printf("%d\n", sizeof(long long)); //剩下的可自验printf("%d\n", sizeof(float));printf("%d\n", sizeof(double));printf("%d\n", sizeof(long double));return 0;
}
2.变量
生活中有很多不变的值,例如:圆周率、血型、身份证号,称之为常量
有些值是可变的,例如:身高、体重、年龄,称之为变量
ch、b、year是我们给不同类型的变量取的名字,变量的值初始化后是可以改变的
变量命名规则:
变量的分类:
- 定义在{}内的变量称之为局部变量
- 定义在{}外的变量称之为全局变量
#include <stdio.h>
int year = 2019;//全局变量
int main()
{int local = 8;//局部变量int year = 2022;//局部变量printf("year = %d\n", year);//打印哪个?return 0;
}
全局变量和局部变量同名,优先使用局部变量
变量的作用域:变量所在的局部范围。(在{}内起作用,出了{}就销毁)(全局变量作用域是整个工程)
变量的生命周期:变量的创建到变量的销毁之间的时间段
局部变量的生命周期是:进入作用域时开始,出作用域时结束。
全局变量的生命周期是:整个程序的生命周期
3.常量
常量的定义跟变量有所区别,可以分为以下几种情况:
- 字面常量
- const修饰的常变量
- #define定义的标识符常量
- 枚举常量
#include <stdio.h>
enum People
{ MALE, //括号中的MALE,FEMALE,child是枚举常量FEMALE,//如果不给MALE赋初始值,它默认为0(FEMALE为1,child为2,以此类推)child //枚举常量只能初始化赋值(或者不初始化)
}; //枚举常量初始化后再改变它的值会报错
//
int main()
{//字面常量3.14;1000;//const修饰的常变量const float weight = 50.5;//这里的weight是const修饰的常变量weight = 55.5;//const修饰的常变量是不能直接修改的//但const修饰的常变量在C语言中只是在语法层面限制了//weight本质上还是一个变量,所以叫常变量//#define定义的标识符常量#define NUM 10//这里NUM被定义为常量10,以后的程序中出现NUM将自动替换为10,且不可修改printf("max = %d\n", NUM);//打印结果为10//枚举常量printf("%d\n", MALE);//打印结果为0
4.字符串
所谓字符串就是在“ ”内的一串字符,例如“hello world”就是一个字符串 字符串的结束标志是一个’\0’的转义字符(’ ‘内的是字符),不算做字符串内容,所以字符串表面看不到’\0’,但在计算字符串长度时’\0’是结束标志
'\0’重要性,例1:
#include <stdio.h>
int main() //通过下面代码的打印结果观察'\0'的重要性
{char arr1[] = "PacifyTheNorth";char arr2[] = {'P', 'T', 'H'};char arr3[] = {'P', 'T', 'H', '\0'};printf("%s\n", arr1);printf("%s\n", arr2);printf("%s\n", arr3);return 0;
}
arr2结尾处没有’\0’作为结束标志,当printf函数读到’H’时不会停止,它会一直往后走直到找到’\0’,所以打印出现了烫烫烫烫的乱码,arr1和arr3结果正常
'\0’重要性,例2:
#include <stdio.h>
#include<string.h>//使用strlen需要包含这个头文件
int main()//通过下面代码的打印结果观察'\0'的重要性
{char arr1[] = "PacifyTheNorth";char arr2[] = {'P', 'T', 'H'};char arr3[] = {'P', 'T', 'H', '\0'};int a = strlen(arr1);int b = strlen(arr2);int c = strlen(arr3);printf(" %d\n %d\n %d\n", a, b, c);return 0;
}
arr1和arr3结果正常,但arr2打印输出了一个随机数字35,不同的电脑或不同的编译器会得到不同答案,这台电脑是到第35位才找到’\0’结束
5.转义字符
观察打印结果
#include <stdio.h>
int main()
{printf("c:\code\test.c\n");return 0;
}
没按照我们预期打印出c:\code\test.c\n,原因就是这个字符串中包含了多个转义字符
下面是一些常见的转义字符:
- \? 在书写连续多个问号时使用,防止他们被解析成三字母词
- \’ 用于表示字符常量’
- \“ 用于表示一个字符串内部的双引号
- \ 用于表示一个反斜杠,防止它被解释为一个转义序列符
- \a 警告字符,蜂鸣
- \b 退格符
- \f 进纸符
- \n 换行
- \r 回车
- \t 水平制表符
- \v 垂直制表符
- \ddd d d d表示1~3个八进制的数字, 如: \130 表示字符X
- \xddd d表示2个十六进制数字, 如: \x30 表示字符0
当我们看完这些转义字符的特点之后,我们就能打印出c:\code\test.c\n了
6.注释
注释的作用:
- 不需要代码可以不删除,注释掉后不影响运行
- 有些代码较难理解,可以注释中文方便理解和回顾
代码前面加了//就会变成注释
7.选择语句
C语言中的选择语句分为三种
- if语句
- switch
- 条件运算符 A ?B : C
if语句:
#include <stdio.h>
int main()
{int num = 0;printf("你会坚持学习吗?(选择0放弃 or 1坚持):>");scanf("%d", &num);if(num == 1)//if后面括号内容为真就执行if下面语句,为假就跳到else执行else下面语句{prinf("坚持,金麟岂是池中物,一遇风云便化龙\n");}else//就是num不等于1的情况{printf("放弃,关山难越,谁悲失路之人\n");}return 0;
}
switch语句:
#include <stdio.h>
int main()
{int num = 0;printf("你会坚持学习吗?(选择0放弃 or 1坚持):>");scanf("%d", &num);switch (num)//num为1就跳到case 1语句,为0就跳到case 0语句{case 0:printf("关山难越,谁悲失路之人");break;case 1:printf("金麟岂是池中物,一遇风云便化龙");break;}return 0;
}
条件运算符 A ?B : C
#include <stdio.h>
int main()
{int num = 0;printf("你会坚持学习吗?(选择0放弃 or 1坚持):>");scanf("%d", &num);int N = num ? 5 : 10;//num为真返回5,为假返回10if (N == 5){printf("金麟岂是池中物,一遇风云便化龙");}else if(N==10){printf("关山难越,谁悲失路之人");}return 0;
}
##8.循环语句
C语言的循环语句有while语句、if语句和do…while语句,其他以后讲解,让我们先用while语句感受循环
//while循环的实例
#include <stdio.h>
int main()
{printf("加入ETO\n");int line = 0;while(line<=10)//当line小于等于10时,会不断执行下面的语句,当line大于10时就会跳出while循环{line++;printf("借助外来力量拯救腐朽的人类社会!\n");}if(line>10)printf("消灭人类暴政,世界属于三体!\n");return 0;
}