初识C语言
什么是C语言
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
注
- 语言指的是人和人交流的语言(eg:汉语,英语,日语……),而计算机语言指的是人和计算机交流的语言(eg:C/C++/JAVA/python/Go……)
- C语言是广泛应用于底层开发的(eg:OS、驱动程序),还可以应用于上层开发(eg:应用程序、早期的wps就是用C语言写的)
- C语言是有国际标准的,C语言标准的演变C89、C90、C99、C11……
- 计算机语言的演变:二进制语言、汇编语言(由助记符(ADD\Sub……)组成)、B语言、C语言。其中早期C语言设计上是有些不足的,C语言被各个厂商修改之后各不相同了,从而在编译器上也就运行不了了,这时就出现了国际标准,它规定C语言是什么标准
- 编写C语言用的比较流行的编译器有:Clang、GCC、MSVC(微软的vs)
- VS编译器称为集成开发环境(集成了MSVC这样的编译器),它可以编写以及编译C语言的代码
用VS编写第一个C语言程序
创建项目
创建源文件
编写代码
注:
- 编写代码时首先要写出主函数(main函数),因为C语言是从主函数的第一行开始执行的,所以C语言代码中必须得有main函数(入口)
- printf 是库函数用于在屏幕上打印信息的
- printf 函数的使用,也需要引用头文件stdio.h
main函数总结:
-
main函数是程序的入口,一个工程中main函数有且仅有一个
-
当出现程序函数"int main()"已有主体这样的错误时,说明一个工程中出现了多个main函数
-
一个工程中可以有多个.c文件,但是多个.c文件中只能有一个main函数
编译代码以及运行
注意:以上是在VS2019下运行的,如果在VS2013中运行需要注意当运行时会发现程序执行的太快看不到结果,这时需要设置VS2013中的属性(VS2019不需要设置项目属性)
设置项目属性:右击项目->点击属性
注意:VS2013和VS2019的使用大同小异
数据类型
出现这么多种的类型,是因为计算机语言在编写程序时需要解决生活中问题,计算机语言必须有能力来描述生活中问题(eg:年龄、体重、收入……)以及类型丰富选择性更多空间利用率更高。
每种类型的大小
int main()
{
printf("%d\n", sizeof(char)); //1
printf("%d\n", sizeof(short)); //2
printf("%d\n", sizeof(int)); //4
printf("%d\n", sizeof(long)); //4
printf("%d\n", sizeof(long long)); //8
printf("%d\n", sizeof(float)); //4
printf("%d\n", sizeof(double)); //8
printf("%d\n", sizeof(long double)); //8
return 0;
}
注:
-
%d用于打印整数、%lf用于打印double类型、%f用于打印float类型
-
sizeof是关键字也是操作符,用来计算类型或者变量所占空间的大小
-
sizeof的单位是字节byte
-
二进制由0-1组成、八进制由0-7组成、十进制由0-9组成、十六进制由0-f组成
-
计算机中最小的单位是bit(比特位),一个比特位是存放一个二进制位的
-
计算机中的单位由小到大:bit、byte(1byte=8bit)、kb(1kb=1024byte)、mb(1mb=1024kb)、gb(1gb=1024mb)、tb(1tb=1024gb)、pb(1pb=1024gb)、……
-
long和int类型大小相同,这是因为C语言标准规定sizeof(long)>=sizeof(int)即可(在VS中采用的是大小相等)
注意:存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
变量、常量
常量描述的是不能改变的量
变量描述的是能被改变的量
定义变量的方法
int age = 150;
float weight = 45.5f; //代表单精度,如果不加f默认代表双精度(d)
char ch = 'w';
变量的分类:局部变量、全局变量
局部变量:在大括号内部定义的变量
全局变量:在大括号外部定义的变量
变量的使用
//全局变量 - {}外部定义的
int a = 100;
int main()
{
//局部变量 - {}内部定义的
int a = 10;
printf("%d\n", a);
return 0;
}
注意:当局部变量和全局变量名字冲突的情况下,局部优先。不建议把全局变量和局部变量的名字写成一样的
注意:
- 当在VS中使用scanf函数时会发生这样的报错
这时需要在源文件开头(第一行)输入这段代码即可使用scanf函数
#define _CRT_SECURE_NO_WARNINGS 1
-
scanf_s函数是VS编译器提供的,不是C语言标准规定的,因此如果使用了在VS中能跑,但在其他平台就不行了(可移植性太差了),综上使用scanf函数
-
scanf_s函数和scanf函数的使用方法是有区别的
-
当该文件中添加这句代码时#define _CRT_SECURE_NO_WARNINGS 1,每当创建新源文件时都会有这句代码
VS2019路径: