C语言的基础
任何事物的运行离不开两个部分,一个部分是“事物”,一个部分是“运行”,前者是状态,在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语言的基础的更多相关文章
- iOS开发系列--C语言之基础知识
概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...
- Golang友团无闻Go语言Web基础视频教程
教程内容:GO语言资料Golang友团无闻Go语言编程基础Golang友团无闻Go语言Web基础教程 Go语言Web基础教程列表:[Go Web基础]12Go Web 扩展学习.mp4[Go Web基 ...
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- c语言学习基础:[1]开发工具介绍
标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...
- 关于JS脚本语言的基础语法
JS脚本语言的基础语法:输出语法 alert("警告!"); confirm("确定吗?"); prompt("请输入密码");为弱 ...
- 2.4JAVA基础复习——JAVA语言的基础组成数组
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- 2.3JAVA基础复习——JAVA语言的基础组成函数
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
随机推荐
- 16061701(地图灯光编译Beast报错)
[目标] 地图灯光编译报错 [思路] 1 我自己测c2_cwd_rt 附件为当时log 2 ExampleGame\BeastCache\PersistentCache 3 重新删除掉BeastCac ...
- Linux 设备驱动程序 proc
不能再简化了 #include<linux/module.h> #include<linux/init.h> #include<linux/proc_fs.h> i ...
- Game02 最新版本2.0.0
Game02发布转站于此,欢迎大家下载.... 简介: Game02是由ImGenius开发的一款即时在线小游戏.玩法简单,易于上手,主要靠技术,不会出现不要脸的充值等内容. 操控方法:W和A左右移动 ...
- 使用php-cs-fixer格式化你的代码
在开发中,我们会有意识的遵行一套规范来保证团队代码的一致性.PSR是我们PHP遵循的共同规范. 在这里,推荐一个代码格式化工具php-cs-fixer,可以一键把代码格式化为PSR-2的标准. 安装: ...
- 自定义cell(xib)中button点击事件不能响应的情况
遇到这种问题真的好尴尬,之前从来没有遇到过,以为手到擒来,未曾料到还会遇到问题! 好多年没有找到尴尬的感觉,现在找到了,真的很尴尬 ! *o* 1.首先使用场景: 原本没打算用xib,后来为了快速, ...
- How to realize the double os in the win8 background.
Goal: to realize the Ubantu in the windows system os computer. Tools: Ubantu install USB MSD, Soft ...
- web前端从0开始--1
博主以前没接触过web前端,最近刚开始学习. 在学习的同时,希望能不断整理总结.于是便有了此博客. 博主技术浅薄,并且第一次写此类博客,希望各位大牛能多多保函. 好了废话不多说了,开始正文. web前 ...
- 横向滑动的GridView
思路: GridView行数设置为一行,外面套一个HorizontalScrollView,代码中设置GridView宽度 xml代码 <HorizontalScrollView android ...
- 关于linq to sql类线程同步问题
例如,下面一段代码,当两个线程同时访问时会出现各种由于线程不同步而导致的问题,比如什么DataReader已打开未关闭啊,已经添加了重复的键啊等等. /// <summary> /// 当 ...
- 关于iOS和OS X废弃的API你需要知道的一切
如你所知,已废弃(Deprecated)的API指的是那些已经过时的并且在将来某个时间最终会被移除掉的方法或类.通常,苹果在引入一个更优秀的API后就会把原来的API给废弃掉.因为,新引入的API通常 ...