开启对C语言的学习,加深代码理解吧..

本篇内容多为理论

相对于C#, C++来说,C语言是一门偏向于低级语言的编程语言。在C的学习过程中。必然会接触到硬件方面的知识技术。

高级计算机语言和编译器

C语言本身是高级语言,所谓高级编程语言,就是一种独立于机器,面向过程(POP)或是面向对象(OOP)的编程语言、
C语言就是一门面向过程的编程语言。
使用高级语言可以在更抽象的层面表达程序员的想法而不必要考虑CPU在完成任务时具体需要哪些步骤。(叒又是抽象,所以具象是否是表示接近一项事物的本质呢?)
计算机自己并不理解高级语言其高级指令,在这里编译器派上了用场,它将高级语言程序翻译成计算机可以理解的机器语言指令集程序。
在学习C语言之前,有必要了解一下其编程机制。

C的编程机制

C是可移植性语言,所以可以在多种环境中运行使用,包括UNIX,Linux,MS-DOS,Windows,Mac OS
常说C\C++是跨平台语言,其原理是使用平台相关的编译器生成对应平台的可执行文件,如在Windows中.c.cpp文件将被编译成PE格式,而在Linux系统中将会被编译成ELF格式
以上提到的也许只是部分环境,但终究他们有一些共有的方面。

C的代码被储存在文本文件中,该文件被称为“源代码文件 - Source code file
通常由 basename基本名 + .c (extension)扩展名构成

C通过编译和链接将源代码文件转换为可执行文件。编译器将源代码转换成中间代码(通常为机器语言代码),链接器把中间代码与其他代码进行合并(合并代码),最后再与库文件系统的标准启动代码合并生成可执行文件。

C语言基本数据类型

上溢(overflow) 计算导致的数字过大,超过当前类型所能表达的范围时,就发生了上溢,现代C语言发生这种情况会给上溢的数据赋值一个表示无穷大的特定值。

使用数据类型时,若是将一个值初始化给不同类型的变量时,编译器会自动转换成变量匹配的类型,这可能会导致部分数据丢失。 比如将一个double 值赋给 float 变量,由于C语言只会保留float的前六位精度,其他位的数据将被丢弃。

刷新输出

关于printf 何时将语句输出到终端,起初printf 会将语句发送到缓冲区 (buffer )【作为中间储存区域】 中,由于C标准的明确规定, printf 在遇到 换行符、 缓存区满时会将内容输出到屏幕,这一过程为刷新缓存区。 如果没有换行符且缓存区也没有满,但是吓一跳语句时 scanf()语句时,scanf要求用户输入,此时 printf 将被迫将缓存区内容输出

计算机基础

原码 反码 补码

Refer 基础详解 "原码、反码、补码 详解

前世今生

关于gets()函数

Refer gets()函数 Why is the gets function so dangerous that it should not be used?