开启对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 基础详解 "原码、反码、补码 详解