C语言梦开始的地方
文章目录C语言梦开始的地方C语言的发展历史C语言的三大结构顺序结构选择结构循环结构C语言的关键字C语言梦开始的地方C语言的发展历史C语言由贝尔实验室的丹尼斯·里奇Dennis Ritchie于 1972年 开发。它的前身是B语言——由肯·汤普森基于BCPL为编写UNIX系统而创造但B语言是解释型、不可移植。里奇在B的基础上加入类型系统发展出了更安全、可移植的C并用它重写了UNIX操作系统。时间事件1978年里奇与柯林汉出版《The C Programming Language》KR CKR成为事实标准1989年ANSI发布正式标准 C89同年被ISO采纳为C901999年C99 —— 加入 long long、// 行注释、可变长数组等2011年C11 —— 加入多线程与原子操作支持2023年C23 —— 最新标准引入 nullptr 等新特性虽然如今C语言在日常的工程是已经逐渐退出舞台了但是C语言仍然是计算机语言中的丰碑有许多入门到大牛的程序员们都喜欢叫C语言为计算机的“九阳真经”。C语言虽然已经在计算机开发中逐渐退出了舞台但是它里面的思想还是影响着后面许多的语言比如C、Java、Python、Rust等不过目前嵌入式开发和系统编程的核心语言C语言的三大结构C语言的三大结构顺序选择和循环不仅是C语言是这样的目前常见的语言都是如此。接下来就让我们一起来看看这三大结构是什么样的吧顺序结构顺序结构一件事情从头到尾中间的一直干下去在代码中的表现就是程序从上到下、从左到右逐条执行没有跳转、没有分支。#includestdio.hintmain(){return0;}这个程序就是顺序结构并且也是最简单的C语言程序看到这里有人可能会产生疑惑说为什么这里是int main()而不是void main()或者是这样的int main(int argc,char* argv[])我们先说一下int 和 void 的区别有的时候我们看到书上是void main()根本原因是当时的C语言还说main还是结束必须有返回值是后面规定了必须有返回值这是因为有了返回值我们才能知道程序问题有可能出现在哪里并且如今的编译器写void main()会直接报错带参和不带参的区别这里的参数是指的命令行参数比如Windows的cmdLinux的shell命令都可以被C语言程序通过带参的方式获取不带参就是不获取这些在日常编写程序是官方更推荐int main()的形式如果说当你需要获取参数时就用int main(int argc, char *argv[])选择结构选择结构根据条件判断在多个候选执行路径中选一条执行。intmain(){intscore0;scanf(%d,score);if(score60){printf(passed\n);}else{printf(failed\n);}return0;}上述代码就是选择使用了C语言的输入scanf输出printf和判断语句if……else下面我们通过表格的方式给大家展示一下格式含义%d有符号十进制整数 (int)%ld长整型 (long)%lld长长整型 (long long)%f浮点数 (float)%lf双精度 (double)%c单个字符%s字符串%u无符号整数%%输出一个百分号除了最后的 %% 是输出独占的其他输入输出都可以使用除此之外输入输出还有注意事项scanf注意事项必须用 取地址字符串数组名除外传给指针否则崩溃或未定义行为。格式串末尾不要加 \n。scanf 本身会跳过前导空白结尾的 \n 会让它继续吞空白并等待下一个非空白字符导致控制台卡住等你多输入一次。返回值为成功读入的项数可用它判断输入是否失败if(scanf(“%d”,a)!1) {…}。%s 无法读带空格的字符串读 hello world 只会得 hello要整行请用 fgets。%s、%d 不检查边界/溢出恶意的超长输入可能造成缓冲区溢出。%c 不接受空格跳过会读入空白字符含上次的回车需要时在前面加空格scanf( %c,c);。printf注意事项普通字符原样输出格式说明符与参数顺序、个数、类型必须匹配。%d 前的 \n 只是换行不属于格式说明。函数原型int printf(const char *fmt, …);if……else我们在后续讲到选择语句时再来说一下。循环结构循环结构重复执行一段代码直到条件不满足为止。intmain(){intn0;inttotal0;//1到10的和while(n10){n;totaln;}printf(%d\n,total);return0;}同样这里的while我们后续在讲到循环语句时在来说一下通过上述对顺序选择和循环的了解C语言的关键字关键字说明关键字说明关键字说明关键字说明char字符型short短整型int整型long长整型float单精度double双精度signed有符号unsigned无符号void空类型_Bool布尔(C99)auto默认存储register寄存器static静态extern外部声明typedef类型重命名const只读volatile易变不缓存struct结构体union联合体enum枚举if条件判断else否则for循环while前测循环do后测循环switch多分支case分支标签default默认分支break跳出循环continue继续循环goto无条件跳转return返回sizeof求字节数restrict指针限定(C99)inline建议内联(C99)_Complex复数(C99)_Imaginary虚数(C99)本章节我们了解C语言的发展史和C语言的三大结构以及关键字体系下一章节我们将充分的了解C语言三大结构和部分常见关键字的使用本章完