学习环境:
- 系统:Windows 11
- IDE:Visual Studio 2019
- 代码:https://github.com/HalfPlusOne004/C-Learning
第1节-初识C语言
1 什么是C语言?
语言:
- 人与人之间交流,可以通过汉语、英语、日语等某一人类语言。
- 人与计算机之间交流,可以通过C、C++、Java、Python等某一计算机语言。
C语言是一门通用计算机编程语言,广泛应用于底层开发(操作系统层及其之下的层级)。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、MSVC(VS2019底层使用的编译器)、Turbo C等。
编辑和编译的区别
编辑和编译是软件开发过程中两个完全不同的阶段和概念。
编辑是指对程序代码、界面等进行输入和修改的过程。在编辑阶段,开发人员使用编辑器(如Notepad++、Vim、Sublime Text等)来编写和修改源代码。编辑器提供了语法高亮、代码折叠等功能,帮助开发人员更高效地编写代码。在编辑过程中,开发工具会对输入的代码进行一般的语法检查,但不会执行代码。
编译是指将编辑好的源代码转换为机器可以执行的二进制代码的过程。编译器(如GCC编译器)负责将高级语言(如C、C++、Java等)转换为低级语言(如汇编语言、机器语言)。编译的目的是生成可以在计算机上运行的可执行文件(如.exe文件)。编译过程通常包括语法分析、语义分析、优化和代码生成等步骤。
C/C++是编译型语言,例:
test.c
-> 编译 -> 链接 ->test.exe
2 第一个C语言程序
准备工作:
- 下载安装 Visual Studio 2019
- 工作负载选择“使用 C++ 的桌面开发”
- 打开 Visual Studio 2019
- 创建空项目
- 创建源文件(新建项)
.c
源文件.h
头文件
注意后缀:
.cpp
编译器会按照 C++ 的语法来编译代码.c
编译器会按照 C 的语法来编译代码
#include <stdio.h> // std - standard;i - input;o - output
// 标准的主函数的写法
int main()
{
printf("Hello World!\n");//printf是一个库函数,用来打印数据到控制台
return 0;//因为main函数前面的int是定义返回值类型,int是整数型,所以main函数最后一定要返回一个整数。按照C语言约定成俗的习惯,正常运行返回0,有异常返回非0
}
// 古老的写法-不推荐
// void main() {}
main
函数是程序的入口,一个工程中main
函数有且仅有一个。- VS2019环境如何运行代码:
Ctrl + F5
;调试:F5
。
3 数据类型
为什么写代码?是为了解决生活中的问题。
例:购物、点餐、看电影…
其中以购物为例,买了一本书:
属性 | 值 | 种类 | 数据类型 |
---|---|---|---|
价格 | 66.6 | 小数 | 浮点型 |
页数 | 66 | 整数 | 整型 |
内容 | “Hello…” | 文字 | 字符型 |
数据类型是编程语言中用于定义变量或常量所能存储的数据种类的概念。它们帮助计算机区分不同类型的数据,如数字、字符、布尔值等,从而进行相应的操作。
C 语言的数据类型:
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
注意:存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
每种类型的大小是:
#include <stdio.h>
int main()
{
// %d 是C语言中的格式化输出符号,用于将整数值按照十进制格式输出到标准输出流(通常是控制台)
// %zu 是C语言中的一种格式说明符,用于输出 size_t 类型的无符号整数
// sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小
printf("%d\n", sizeof(char)); // 1(byte)
printf("%d\n", sizeof(short)); // 2(byte)
printf("%d\n", sizeof(int)); // 4
printf("%d\n", sizeof(long)); // 4 C语言规定:sizeof(long) >= sizeof(int)
printf("%zu\n", sizeof(long long)); // 4
printf("%zu\n", sizeof(float)); // 8
printf("%zu\n", sizeof(double)); // 4
printf("%zu\n", sizeof(long double));// 8
return 0;
}
类型的使用:
int age = 20; // 向内存申请了一个4byte的空间,命名为age,并存入值20
double price = 66.6;