1.什么是C语言?
C语言是一门面向过程的计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159-1989,简称"C89",也称其为“ANSIC”。1999年ISO又发布了新的C语言标准,简称为"C99"。
更详细的就请uu们移步百度百科啦,下面开始C语言的初步认识。
2.第一个C语言程序
首先让我们来实现一下简单的“Hello World!”的输出
代码如下:
#include<stdio.h>
int main()
{
printf("Hello,World!\n");
return 0;
}
运行结果:
现在让我们一起来阅读一下这段代码。
#include<stdio.h>是在程序编译之前要处理的内容,称为编译预处理命令;
<stdio.h>是使用printf函数和scanf函数前需要包含的头文件;
int 是main函数的返回类型,即结尾return返回的整型常量0;
main函数是整个程序的主函数,一个程序有且仅有一个主函数,程序执行从main函数开始,也由main函数结束整个程序。
printf函数的作用是输出,调用格式为printf("<格式化字符串>",<参量表>),输出的字符串除了可以是字母、数字、空格和一些数字符号,还可以使用一些转义字符表特殊含义。
输出内容结尾的\n就是转义字符,具有换行的作用。
3.C语言的数据类型
C语言的数据类型有整型、字符型(char)、浮点型、枚举类型(enum)、数组类型、结构体类型(struct)、共用体类型(union)、指针类型和空类型(void)。
其中整型又分为短整型(short)、基本整型(int)、长整型(long)、双长整型(long long)。
它们的区别在哪呢?我们可以通过运行代码来查看一下:
#include<stdio.h>
int main()
{
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
return 0;
}
(备注:sizeof是C语言中的一种单目操作符,能够以字节形式给出其操作数的存储大小。)
这是以上代码的运行结果:
可以看出它们的区别在于存储的字节大小上。
短整型(short)、整型(int)、长整型(long)、双长整型(long long)的大小分别为2个字节、4个字节、4个字节和8个字节。除了在字节大小有区别以外,在取值范围上也有差异。下面引入一个表格,uu们可以仔细看看区别。
这里引入一个新的知识点:C语言中的一个关键字,即unsigned,表示无符号的意思。每种整型都有无符号和有符号两种类型,默认情况下,除了char以外的数据类型,声明的整型都是有符号的类型,要声明无符号类型需要在类型前加上unsigned。无符号和有符号的区别在于无符号类型可以保存2倍于有符号类型的数据。
注意!!!
double和float总是带符号的!
float是单精度浮点数,double是双精度浮点数。
这里的单双精度并不是指小数点后一位和两位有效数字,可千万不敢这么理解。
单精度浮点数的有效数字是7位,双精度浮点数的有效数字是16位(小数点后默认保留6位)
同样,我们利用sizeof来查看一下它们在内存中存储的字节大小:
#include<stdio.h>
int main()
{
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
运行结果如下:
可以看到double类型的字节大小是float类型的两倍,这意味着double虽然精度上要比float高,但因为占据的内存大,相应的,double运算速度就要比float慢得多。因此,在能用单精度的情况下,就不要选择双精度。
4.变量与常量
4.1 如何定义一个变量
格式:变量类型 + 变量名 = 变量内容;
下面我们来定义几个变量:
int main()
{
int age = 19;
char ch = 'C';
float weight = 55.2;
return 0;
}
第一个是定义了一个变量名为age的整型变量,并给其赋值19;
第二个是定义了一个变量名为ch的字符变量,放了一个字符'C’在里面;
第三个是定义了一个变量名为weight的浮点型变量,并给其赋值55.2;
(注意:变量内容要与变量类型最好保持一致,即使不一致,也要保证二者可以相互转化)
这里的ch变量放进去的是一个字符,由一对单引号引起的为单个字符,一对双引号引起的是字符串,关于字符串的内容后续会再详细介绍。
4.2 变量的命名规则
在C语言中,变量的命名是有一定限制的,具体如下:
·只能由字母(包括大小写)、数字和下划线(_)组成;
·不能以数字开头;
·长度不能超过63个字符;
·变量名中间最好区分大小写;
·变量名不能使用关键字。
(关于C语言中存在的关键字,uu们可以去查阅一下,这里就不一一列举了)
4.3 变量的分类
变量又分为局部变量和全局变量,二者的区别在于其作用域和生命周期不同。
我们可以看一下下面这段代码:
#include<stdio.h>
int overall = 100;//全局变量
int main()
{
int part = 200;//局部变量
//重新定义变量overall
int overall = 300;//局部变量
printf("overall = %d\n", overall);
return 0;
}
uu们认为overall的值应该是多少呢?
我们打印一下看看结果:
可以看到overall的值是我们重新定义的300;而非全局变量定义的100;由此可见,当全局变量和局部变量同名时,局部变量优先使用。
(注:此处局部变量overall的定义并没有问题)
4.4 变量的作用域和生命周期
作用域
作用域是程序设计概念,通常来说,一段程序代中所用到的名字并不总是有效的,而限定这个名字的有效性的代码范围就是这个名字的作用域。
局部变量的作用域是变量所在的局部范围;
全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的时间段。
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束;
全局变量的生命周期是:整个程序的生命周期。
4.5 常量
C语言中的常量分为以下几种:
·字面常量
·const修饰的常变量
·#define 定义的标识符常量
·枚举常量
下面通过代码演示一下:
#include<stdio.h>
int main()
{
//字面常量演示
1234;
66.66;
//const修饰的常变量演示
const int i = 50;
i = 66;//此处程序报错,因为i是一个常变量,无法直接修改为66!!
//#define 定义的标识符常量演示
#define MAX 100
printf("max = %d\n", MAX);//此处输出的内容为max = 100;
return 0;
}
枚举常量:
#include<stdio.h>
//举例
enum Figure
{
MIN,
MEDIUM,
MAX
};
int main()
{
//枚举常量演示
printf("%d\n",MIN);//输出0
printf("%d\n",MEDIUM);//输出1
printf("%d\n",MAX);//输出2
//注:枚举常量默认从0开始,往下依次递增1
return 0;
}
今天的内容就到这里啦,希望对大家有所帮助。
如有不足,还请大佬们多多指点啦!
下期内容打算讲一下字符串、转义字符以及注释,顺便补充一些C语言常见的关键字!
不定更新,敬请期待OvO