c语言编程节1
一、初识c语言
你好! C 语言是一种通用的、面向过程式的计算机程序设计语言。
二、新语言类型(按照编译方式分类)
(1)、编译语言:C、C++,需要通过编译器编译后才能运行,编译过程中会检查语法错误。
(2)、解释语言:Python、JavaScript,通过解释器直接一行一行解释运行,语法错误会在运行时报出。
(3)、虚拟机语言:Java,先编译成字节码,再通过虚拟机解释运行。
编程语言:c,c++,c#,java,VB,python,php,go,汇编,swift,脚本语言。
三、开发编译工具
1、Visual Studio
微软公司的开发工具包系列产品,是一个集成的开发环境,相对来说比较完整,它包括了整个软件生命周期中所需要的大部分工具,如代码完成工具、编译器、图形设计器、UML工具、代码管控工具、集成开发环境(IDE)等等,以简化开发人员构建应用程序的过程。通俗的讲,是一款编译器。
Visual Studio 2019有三种SKU:社区版(免费),专业版(得加钱!!!)和企业版(得加钱!!!)。
安装链接:https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
点击免费下载,初学者安装社区版本(Communtiy版本)即可开始社区版本的下载。
安装事项:预留c盘足够大的内存空间,比较耗内存,安装路径可以选择D盘,安装时间有点漫长,,,安装好之后,可以选择个性化设置。
2、其他编译软件
Visual Studio Code(VSCode):一款现代化开源的、免费的、跨平台的、高性能的、轻量级的代码编辑器是一款免费开源的轻量级代码编辑,功能强大,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux。针对于编写现代 Web 和云应用的跨平台源代码编辑器。它在性能、语言支持、开源社区方面,都做得很不错。通俗地讲,它是一款超级的文本编辑器。它定位在编辑器,而非 IDE ,但 VS Code 又比一般的编辑器的功能要丰富许多。可以这样理解:VS Code 的体量是介于编辑器和 IDE 之间。
vim:linux开发编辑工具。
四、第一个c语言程序Hello world
#include <stdio.h>
int main()
{
printf("Hello, World! \n");
return 0;
}
所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。
/* … */ 用于注释说明。
printf() 用于格式化输出到屏幕。printf() 函数在 “stdio.h” 头文件中声明。
stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。
return 0; 语句用于表示返回函数执行值。
五、c语言基本语法
C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。是编程语言的基本元素,它是程序中最小的不可分割单元。主要包括以下几种:
1、关键字:如if、else、for、int等,它们有特定的语义含义。
2、标识符:如变量名、函数名等,用来命名程序元素。
3、常量:如1、2.5、'a’等,它们的值在程序运行过程中不变。
4、字符串:一组字符,开始和结束都使用双引号" "。
5、运算符:如+、-、*、/等,用于进行运算,判断或赋值。
6、分隔符:如( ) { } [ ] , ; :用于分隔其他令牌。
1、分号 ;
C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
2、注释
C 语言有两种注释方式
//单行注释:
/* 单行注释 */
/*
多行注释
多行注释
多行注释
*/
3、标识符
C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。
4、关键字
下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
关键字 | 说明 |
---|---|
auto | 声明自动变量 |
break | 跳出当前循环 |
case | 开关语句分支 |
char | 声明字符型变量或函数返回值类型 |
const | 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的"其它"分支 |
do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 |
else | 条件语句否定分支(与 if 连用) |
enum | 声明枚举类型 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 |
for | 一种循环语句 |
goto | 无条件跳转语句 |
if | 条件语句 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 |
return | 子程序返回语句(可以带参数,也可不带参数) |
short | 声明短整型变量或函数 |
signed | 声明有符号类型变量或函数 |
sizeof | 计算数据类型或变量长度(即所占字节数) |
static | 声明静态变量 |
struct | 声明结构体类型 |
switch | 用于开关语句 |
typedef | 用以给数据类型取别名 |
unsigned | 声明无符号类型变量或函数 |
union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 |
5、C 中的空格
只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。在 C 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。
六、C 数据类型
变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
1、类型分类
基本数据类型
它们是算术类型,包括整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)。
枚举类型:
它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。
void 类型:
类型说明符 void 表示没有值的数据类型,通常用于函数返回值。
派生类型:
包括数组类型、指针类型和结构体类型。
2、整数类型
下表列出了关于标准整数类型的存储大小和值范围的细节:
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
可以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。例如下代码:
#include <stdio.h>
#include <limits.h>
int main()
{
printf("int 存储大小 : %lu \n", sizeof(int));
return 0;
}
3、浮点类型
类型 | 存储大小 | 值范围 | 精度 |
---|---|---|---|
float | 4 字节 | 1.2E-38 到 3.4E+38 | 6 位有效位 |
double | 8 字节 | 2.3E-308 到 1.7E+308 | 15 位有效位 |
long double | 16 字节 | 3.4E-4932 到 1.1E+4932 | 19 位有效位 |
#include <stdio.h>
#include <float.h>
int main()
{
printf("float 存储最大字节数 : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}
4、void 类型
序号 | 类型与描述 |
---|---|
1 | 函数返回为空,C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status); |
2 | 函数参数为空,C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void); |
3 | 指针指向 void,类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。 |
5、类型转换
类型转换是将一个数据类型的值转换为另一种数据类型的值,C 语言中有两种类型转换:
隐式类型转换:
隐式类型转换是在表达式中自动发生的,无需进行任何明确的指令或函数调用。它通常是将一种较小的类型自动转换为较大的类型,例如,将int类型转换为long类型或float类型转换为double类型。隐式类型转换也可能会导致数据精度丢失或数据截断。
int i = 10;
float f = 3.14;
double d = i + f; // 隐式将int类型转换为double类型
显式类型转换:
显式类型转换需要使用强制类型转换运算符(type casting operator),它可以将一个数据类型的值强制转换为另一种数据类型的值。强制类型转换可以使程序员在必要时对数据类型进行更精确的控制,但也可能会导致数据丢失或截断。
double d = 3.14159;
int i = (int)d; // 显式将double类型转换为int类型