【C语言入门】从零开始,带你写出第一个让计算机“开口说话“的程序
本文介绍了C语言的基础知识,包括其作为人机交流语言的特点、历史发展、编译过程及开发环境。重点讲解了C语言的基本结构如main函数、printf函数使用方法,以及字符编码、字符串处理、转义字符等核心概念。同时详细阐述了数据类型、sizeof运算符的使用和注意事项,并对signed/unsigned类型进行了对比说明,为初学者提供了全面的C语言入门指南。

前言
你是否曾好奇,计算机是如何“听懂”人类的指令,并按照我们的想法执行任务的?你是否也想亲手写出第一个程序,让计算机开口“说话”?如果你对编程充满好奇,却不知从何开始,那么这篇文章就是为你准备的!
C语言作为一门经典且强大的编程语言,不仅是许多高级语言的基础,更是理解计算机底层运行机制的重要工具。从操作系统到嵌入式开发,C语言的身影无处不在。本篇文章将带你从零开始,一步步搭建开发环境,理解基本概念,最终写出你的第一个C语言程序——让计算机真正“开口说话”!
无论你是编程小白,还是希望系统回顾C语言基础的同学,这里都将是你编程之旅的美好起点。准备好了吗?让我们一起开启这段奇妙的C语言之旅吧!
一、初始C语言
1.1 C语言是人给计算机下指令的语言,正如人和人交流一样
1.2 C语言的历史
各语言排行榜:https://www.tiobe.com/tiobe-index/
1.3 C语言源代码是文本文档,需要编译和链接后,生成exe文件(二进制文件)

具体过程:
1.4 集成开发环境
集成开发环境集成了编译器、编辑器、调试器等,比如VS2022集成了msvc
1.5 创建项目





项目打开方式(另一种):
二、C语言基础
2.1 main函数
C语言历史原因:return 0表示正常返回
2.2 printf理解
使用必须带头文件stdio.h( std-standard i-input o-output 标准输入输出函数)
print-打印
f-format 指定的格式
printf-按照指定的格式打印
2.3 关键字
程序员命名不能与关键字重合
define不是关键字,是一个预处理命名
详细:https://en.cppreference.com/w/c/keyword.html
2.4 字符和ASCii
128个字符
A-Z:65-90
a-z:97-122
大小写差32
数字字符:‘0’-‘9’:48-57
ASCII值0-31为不可打印字符
C语言中的字符就遵循了ASCII编码的方式
详细:https://en.cppreference.com/w/cpp/language/ascii.html
打印出来:(在9的倍数换行)
#include<stdio.h>
int main()
{
int i = 0;
for (i = 32; i <= 127; i++)
{
printf("%c ", i);
if (i % 9 == 8)
{
printf("\n");
}
}
return 0;
}
2.5 字符串与’\0’
'\0’是字符串的结束标志

printf中%s打印字符串需要’\0’才能结束
2.6 转义字符
转义字符——转变原来的意思
‘?’——用于三字母词:??)–>];??(–>[;‘‘的作用是让’?‘不是三字母词,只是普通的’?’
打印单引号需要用转义字符’‘(不是成对的单引号);
同理打印字符串双引号也是"“;”\n"打印\n’‘转义(在打印路径上面有用)

‘\a’:警报声
‘\b’:光标退一格(调试验证)但是如果后面有字符,会覆盖一个
‘\r’:光标来到这一行的开头(’\r’也占一个)
‘\t’:制表符Tab——4/8个字节(是对齐4/8倍数空格),要看具体的终端是几个字节
字符的8进制/16进制表示形式:\ddd、\xdd
‘\0’也是一种特殊的形式,NULL字符
补充:strlen统计的是’\0’之前的字符,需要包含头文件string.h
2.7 注释
- /…/ 可以注释一行或多行(不支持嵌套)
- //放在行头注释一行
- 编译时注释会变成空格(命名要注意)
三、数据类型


补充:布尔类型(C99引入)
_Bool/bool:专门表示真假的,变量的取值:true/false(也可以是1/0)
必须包含头文件stdbool.h
3.1 sizeof
sizeof算出数据类型的大小:sizeof后面接数据类型和变量(变量可以不接括号),后面如果是表达式可以省略括号,算出单位为字节
各单位换算:

sizeof后面的表达式不会被计算(不会开辟内存)
signed和unsigned(无符号整数不能存放负数 )
计算结果:
当知道系统对sizeof是什么返回类型的,可以不用%zd,可以用%llu、%u打印,不同的编译器size_t有不同的类型,%zd是VS提供打印sizeof的占位符。
unsigned所能表示的范围比signed大
对char的区别:
以后在写char要标注signed或unsigned,VS上默认是signed
3.2 数据类型的范围
了解数据类型的范围让我们选择更加从容(范围记不住,记符号就行)
3.3 变量
类型是为了创建变量,变量要初始化(良好的习惯)
一个局部变量不初始化的,默认是随机值,(不初始化,会报错)
一个全局变量不初始化,默认是0
变量的储存
四、操作符
4.1 算术操作符
补充:C语言中赋值与数学中的不一样,向后赋值
除法两端是整数的时候,/算出的是整数(商),整数用%f打印会报错(结果错误),整数赋值给float(不报错)
两个运算数至少一个浮点数,算小数除法,可以用%f打印(默认打印6位),%lf打印double类型,小数除法也可以强行转换
float类型存放到int类型发生截断
%取模操作符计算的是整除的余数,所以两端只能是整数,不能是浮点数
4.2 赋值操作符

连续赋值最好拆开(良好的习惯)
4.3 单目操作符
++或–
前置++后使用
后置++前使用
不要搞得过于复杂(编译器预算结果不同)
+或-
五、printf与scanf
5.1 printf的占位符
printf可以指定占位符,占位符指的这个位置可以被其他值代入


5.2 printf的输出格式
printf可以限制占位符的最小宽度
对于整数:
对于小数限制所有数字的最小显示宽度:
总是显示正负号
限定小数点的位数(如果超出,要进行四舍五入)
%f、%lf也是一样,使用方法(%.nf或%.mlf)
当限制宽度与限定小数结合
最小宽度与小数位数两个限定值,可以用*代替,通过printf传入
输出部分字符串(%.ms)m为数字
5.3 scanf的用法


5.4 scanf的返回值
scanf()的返回值,表示成功读取的变量个数。
如果没有读取任何数,或者匹配失败,返回0,如果在读取数字之前读取错误或者遇到文件末尾,返回常量EOF(-1)。
返回0时:
返回-1:
用途:多组输入
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
while (scanf("%d%d", &a, &b) == 2)
{
c = a + b;
printf("%d\n", c);
}
/*while (scanf("%d%d", &a, &b) != EOF)
{
c = a + b;
printf("%d\n", c);
}*/
return 0;
}
结束方法:输入字符返回0或者三次Ctrl+Z返回-1
5.5 scanf的占位符

注:%c不会跳过空格
如果跳过空格在%c前加空格

%s%s从第一个非空白字符开始读起,遇到空白字符(空格、换行符、制表符)为止
解决办法用gets()


但是仍然符合%s遇到空白字符结束
5.6 赋值忽略符
由于每个人输入的方式不一样(比如:1994/3/5,1994/3/5),为了避免这种情况,scanf()提供了赋值忽略符。只要把*放在任何占位符%的后面,该占位符就不会返回值,解析后被丢弃
结语
恭喜你!通过本篇文章的学习,你已经成功迈出了C语言编程的第一步。从搭建环境、理解基础语法,到最终写出第一个程序,你已经初步掌握了如何与计算机“对话”。
编程之路,始于足下。C语言的世界远不止于此,数据类型、操作符、函数、指针、内存管理……还有更多精彩的内容等待你去探索。记住:每一个优秀的程序员,都曾是从“Hello, World!”开始的。
如果你在实践过程中遇到问题,不要气馁。编程的本质是不断尝试、调试与思考。欢迎在评论区留言交流,也欢迎关注我的专栏,后续我们将继续深入C语言的更多核心知识。
生活有理想,代码有温度。愿你在编程的世界里,找到属于自己的那份热爱与坚持!
更多推荐


所有评论(0)