任何事物的运行离不开两个部分,一个部分是“事物”,一个部分是“运行”,前者是状态,在C语言中表现为常量、变量等,后者是过程,在C语言中表现为语句、函数等。

  语言是表达的工具,C语言也不例外,它是人告诉编译器的“语言”,然后编译器把它转化为汇编语言,汇编语言就是编译器告诉电脑的“语言”,我们用C语言写成的文件就叫代码,编译器翻译后的文件就叫程序。编译器把代码翻译成程序分为三个过程:预处理、编译和链接。有了程序,人就可以与电脑进行交互了,人对电脑说的“话”就叫输入,电脑对人说的“话”就叫输出。

  无规矩不成方圆,接下来我们就说说C语言编程的“规矩”。

  任何语言都是线性结构的,不论我们大脑里想的东西有多么地复杂,我们嘴上说的话都只能一个字一个字地吐出来,用C语言写的代码同样也是一维的,可能很多人不屑这么一个事实,在编译原理中,所有文法的分析都离不开这么一个基本事实,我们在写代码时也不知不觉地线性化。先来看一个简单的例子:

  如果把整个程序比作是一条“线”,那么这条“线”首先要有一个入口,这个入口就是main函数的调用("main(agc, argv);"),一直到return语句(或者exit函数)的执行("return 0;"),我们就离开了程序,这就是整条“线”的“线头”和“线尾”,准确地说是线头的“珠子”和线尾的“珠子”,中间串起来的“珠子”就是一条一条的语句,这就是程序的基本框架。

  开头的#include是预处理指令,预处理指令对应的是“预处理”阶段,语句对应的是“编译”阶段,说白了,预处理指令是为语句服务的,就比方说,这里的"#include <stdio.h>",它引入了scanf函数和printf函数的定义,这样我们才能使用scanf函数调用和printf函数调用的语句。

  最基本的语句有运算语句、控制语句和输入/输出语句(函数调用的一种),分述之:

  (1) 运算语句

  基本的数据类型都是数字类型,有整数类型、实数类型和复数类型三种,布尔类型(_Bool)和字符类型(char)本质上是枚举类型(enum),而枚举类型本质上又是整数类型。不同的类型有不同的格式和长度,整数分为自然数(unsigned)和整数(默认),也分为short(16位)、int(32位或64位)和long(64位),实数分为float(32位)、double(64位)和long double(128位),复数分为float _Complex(64位)、double _Complex(128位)和long double _Complex(256位)。我们也可以用typedef语句定义新的类型,但只是给原有的数字类型取了一个昵称罢了。

  数量分为常量和变量两种,常量是不变的,如1.23,变量是变化的,如x,如果常量是一个具体的物体,那么变量就是一个装载该物体的箱子,它可以存储任何一个常量。变量需要声明其类型,而常量一看便知,无需指定。表达式是把常量或变量通过运算符粘合起来的东西,运算符是一种符号化的“函数”,它借鉴了数学运算的表达方式,大大地简化了算术运算、关系运算、逻辑运算等数学运算的输入。赋值语句的左边是变量,右边是表达式,自增运算符++和自减运算符--本质上就是赋值语句。

  (2) 控制语句

  控制语句是非常重要的,如果没有他,一条“直线”是很难玩出什么花式出来的,它使得当前的运行能够在程序上来回跳转,大大地简化了重复的描述,增强了C语言的描述能力,就连后面要讲的函数本质上也是一种跳转。控制语句分为有条件的与无条件的,有条件的分为选择语句和循环语句,选择语句的鼻祖是if语句,在此基础上延伸出了switch语句,而循环语句的鼻祖是while语句,在此基础上延伸出了do语句和for语句,无条件的就叫跳转语句,跳转语句的鼻祖是goto语句,在此基础上延伸出了break语句、continue语句和return语句,break和continue主要是为了循环语句设计的,而return语句是为了跳出函数而设计的,还有一个exit函数是为了跳出整个程序而设计的。

  (3) 输入/输出语句

  暂且只需知道标准输入函数scanf和标准输出函数printf即可。

C语言的基础的更多相关文章

  1. iOS开发系列--C语言之基础知识

    概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...

  2. Golang友团无闻Go语言Web基础视频教程

    教程内容:GO语言资料Golang友团无闻Go语言编程基础Golang友团无闻Go语言Web基础教程 Go语言Web基础教程列表:[Go Web基础]12Go Web 扩展学习.mp4[Go Web基 ...

  3. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

  4. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  5. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  6. Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

    JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...

  7. c语言学习基础:[1]开发工具介绍

    标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...

  8. 关于JS脚本语言的基础语法

    JS脚本语言的基础语法:输出语法  alert("警告!");  confirm("确定吗?");   prompt("请输入密码");为弱 ...

  9. 2.4JAVA基础复习——JAVA语言的基础组成数组

    JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...

  10. 2.3JAVA基础复习——JAVA语言的基础组成函数

    JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...

随机推荐

  1. java集合中的传值和传引用

    在学习java集合过程中发现了传值和传引用的区别: 我们来看下面两句话 ●java集合就像一种容器,我们可以把多个对象(实际上是对象的引用),丢进该容器.(来自疯狂java讲义) ●当使用Iterat ...

  2. linux环境下安装oracle数据库 原文在卡卡100http://www.cnblogs.com/kaka100

    centos55_oracle11gr2_install   第一个阶段:安装centos55 a:安装centos5.5   用图形界面安装  硬盘 16G 注意:用图形界面安装.. 第二个阶段:配 ...

  3. C#数据库导出(入)TXT

    导出: public void ExportTxt() { var file = System.IO.File.Open(path, System.IO.FileMode.Open); using ( ...

  4. git检出与创建的过程

    Command line instructions Git global setup git config --global user.name "bingo" git confi ...

  5. Tomcat Shell脚本(启动|关闭|重启|状态)

    #!/bin/bash # # chkconfig: - # description: Tomcat start/stop/status script #Location of JAVA_HOME ( ...

  6. UnitTesting中的ClassInitialize,ClassCleanup,TestInitialize,TestClearup

    ClassInitialize 标识一个包含代码的方法,这些代码必须在测试类中的任意测试运行之前使用,并用于分配测试类所使用的资源.此类不能被继承. http://msdn.microsoft.com ...

  7. memo的一般方法

    str := '好时代卡卡卡的水平佛单师傅开锁'; Memo1.Lines.Add(str); // 在最后加一行字符串 Memo1.Lines.Delete(x); // 删除x+1行字符串 Mem ...

  8. Multiple View Geometry in Computer vision 1.1节部分翻译

    1.1简介—无处不在的投影几何 我们都熟悉射影变换.当我们看一幅图,我们看到的方形不是方形,或圆形不是圆形.平面立体映射到图片上的变换是一个投影变换的例子. 因此投影变换时保留的几何属性是什么呢?当然 ...

  9. JDK8+Dubbo2.5.2实践

    几年前就听说过Dubbo的大名,今天由于工作需要,研究一下. 从网上找了一篇文章,非常靠谱,并且提供了简单的示例代码,基本上可以跑起来. 文章地址: http://www.cnblogs.com/Ja ...

  10. 第3.2 使用案例1:股票期货stock portfolio 21050917

    As mentioned earlier in the chapter, the first use case revolves around a stock portfolio use case  ...