任何事物的运行离不开两个部分,一个部分是“事物”,一个部分是“运行”,前者是状态,在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. (SenchaTouch+PhoneGap)开发笔记(1)开发环境搭建一

    1.下载senchaTouch 2.下载senchaCMD 3.安装ruby(for windows ) 4.senchaCmd创建项目: 打开senchacmd,cd到senchaTouch的目录如 ...

  2. vpn是什么?手机vpn是什么?

    vpn是什么?手机vpn是什么? vpn是什么?手机vpn是什么? vpn是什么?手机vpn是什么?VPN全称是Virtual Private Network,也就是虚拟专用网的意思.很多人不知道VP ...

  3. hadoop运行原理之Job运行(五) 任务调度

    接着上篇来说.hadoop首先调度辅助型task(job-cleanup task.task-cleanup task和job-setup task),这是由JobTracker来完成的:但对于计算型 ...

  4. Adapter 启动时报错

    如果把Adapter安装到C盘,有时在启动Adapter的时候会抛出java.io.IOException: Cannot run program "C:\tibco\adapter\adr ...

  5. android异常: java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused

    android手机做下载文件时,报了如下异常: java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused 模拟器 ...

  6. sublime简书安装配置

    sublime-text3编辑器 安装 sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo ...

  7. JSFuck奇葩的js编码

    以前对黑客很崇拜,黑客的世界无比精彩.最近为了炫耀,想起了这段特殊的代码. [][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[ ...

  8. Java 找不到主类错误

    Eclipse 运行java 程序,突然出现错误:没有或找不到主类. 在网上找了好多办法,都不行. jdk环境配置啊-->这个一般不会出错,因为以前都不会出现这种问题. 查看项目配置啥的--&g ...

  9. Bootstrap学习笔记(一)

    一.什么是Bootstrap bootstrap是一款css框架,便于响应式设计. 二.怎样使用bootstarp 最常用的方法,在html结构中引入样式表bootstarp.min.css,以及jq ...

  10. js正则实现二代身份证号码验证详解

    js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...