前世死因C语言编程基础.ppt_计算机软件及应用_IT/计算机_专业资料。第五讲 C语言编程基础(1) 主要内容 编程 C语言程序基本框架 标识符和关键字 数据类型、变量、常量 运算符和表达式 2 计算机程序 计算机的工作是由程序来控制的。 程序描述了计
第五讲 C语言编程基础(1) 主要内容 编程 C语言程序基本框架 标识符和关键字 数据类型、变量、常量 运算符和表达式 2 计算机程序 计算机的工作是由程序来控制的。 程序描述了计算机处理数据、解决问题的过程, 这是程序的实质。 程序设计的将人们制定的对实际问题的解决方案 用程序设计语言表达出来,并由计算机执行得 出结果。 程序设计语言(也被称为“编程语言”, Programming Language)是人们描述(编制) 程序所使用的规范和方法(语言)。 机器语言、汇编语言、高级语言 机器语言与汇编语言 由计算机硬件系统可以识别的二进制指令组成 的语言称为机器语言。 计算机发展的初期,软件工程师们只能用机器语言来编 写程序。这一阶段,在人类的自然语言和计算机编程语言之 间存在着巨大的鸿沟。 汇编语言将机器指令映射为一些可以被人读懂 的助记符,如ADD、SUB等。 此时编程语言与人类自然语言间的鸿沟略有缩小,但仍 与人类的思维相差甚远。因为它的抽象层次太低,程序员需 要考虑大量的机器细节。 高级语言 高级语言屏蔽了机器的细节,采用人容易理 解的形式对解题过程进行描述。用高级语言来 书写程序使得程序设计者不必考虑很多的计算 机硬件细节,而是以熟悉的语句和数学公式来 表达程序设计的结果。易于学习、易于掌握。 高级语言及其程序的执行 用高级语言书写的程序不可能直接在计算机上执行, 需要将它翻译成机器语言指令程序。 翻译的方式有两种: 编译(Compilation)方式 解释(Interpretation)方式 6 5 高级语言及其程序的执行 编译方式是设法把高级语言程序(也称为“源程序”)翻译 转换成为可以由计算机直接执行的机器语言指令程序,经 连接装配后转变为“可执行程序”(Executable Program)。 人们实现了高级语言“编译器”(Compiler)完成这种翻译 工作。编译器把高级语言程序看成是符合一定语法结构的 符号串,对它进行加工变换。 7 高级语言的编译过程 编译器对源程序的加工一般分为两个阶段: ?1、编译 将源程序翻译成二进制机器语言。编译后得到的结果为 目标文件。 ? 2、连接 目标模块与其他一些基本模块(通用目标程序模块,由 编译软件或其他人提供)连接在一起,最终形成“可执 行程序”(executable program),后缀“.exe”。这 样的程序就可以在计算机上实际运行了。 8 高级语言编译过程 库文件 (各种函数) 源程序 (文本文件) 目标文件 可执行文件 (二进制文件) *.CPP 编译 compile (二进制文件) *.OBJ 连接 link *.EXE 高级语言程序的解释过程 解释方式 由一种称为“解释器” (Interpreter)软件实现。 解释器在工作方式上与编译器 不同,它不事先对源程序进行 翻译,而是在执行时即时对源 程序的语句进行分析和解释, 实现源程序所描述的功能。 机器语言指令 10 应用较广泛的高级语言 FORTRAN、PASCAL、C / C++ COBOL、BASIC、ADA、JAVA 11 C语言简介 C 是由美国贝尔实验室的 Dennis Retchie 在 1972 年设计 开发的,开发目的是想成为一种编制“系统程序”的工具语 言。 Retchie 等人首先用自己发明的 C 语言编写了 UNIX 操作 系统。以后 C 语言逐步发展成为开发系统软件的主要语言。 许多常见的软件系统,例如,在中国使用很广泛的计算机 辅助设计软件 AUTOCAD,数学软件系统 Mathematica 等, 以及许多语言编译系统本身,其软件系统的全部或者部分程 序就是用 C 语言开发的。 C 语言已成为最重要的软件系统开发语言,由此可见 C 语言在计算机领域地位之重要。 12 C++语言 C++ 是在 C 语言基础上发展出的一种“面向对象”语言。 它是由 Bjarne Stroustrup 在美国贝尔实验室开发的(1983)。 C++ 是 C 语言的一个扩充,它一方面修正了 C 的一些弱 点和不足,使用起来更方便可靠;另一方面,也是更重要的, 这种语言以支持“面向对象”(Object-Oreinted,简称为OO) 的程序设计方法为基本目标,提供了一套支持面向对象程序设 计的机制,如“类”(class)、“对象”(object)等等。 面向对象的方法被认为是开发复杂软件系统的一种有效途 径, OO 程序设计语言也已经被广泛接受。C++ 是目前使用 最广泛的一种面向对象的程序设计语言。 13 VC++6.0编程 Visual C++ 6.0是微软公司1998年推出的开发 工具。它不仅可以作为C/C++的编译器,同时还 是一个基于Windows操作系统的可视化集成开发 。由于功能强大,开发界面友好,一直都是专 业程序员开发软件的首选工具之一。 启动VC++ 编译系统 单击“File”菜单 中“New”命令 VC++编译 系统界面 选择“Files”选项卡 选择C++源 文件命令 输入文件名 输入文件 存放 选择驱动 器或目录 单击选择 驱动器 输入C++ 源代码 C++源文件 编辑界面 可以将此源 代码另起文 件名存盘 选择编译命令,将源文 件.cpp生成.obj文件 错误所在行 错误的原因 如果编译出错,会出现提示信息, 指出错误的及种类 光标移到该行 双击错误 所在行 生成可执 行文件 通过后单 击该命令 运行程序 运行结果显示 在DOS屏上 二、C语言基础 ? 程序结构 ? 基本元素:标识符和关键字 ? 变量、常量和数据类型 ? 运算符和表达式 ? 语句及控制流 ? C语言标准库函数 语言规范 开发库 求两个整数之和 #includestdio.h 预处理命令:文件包含 int main ( ) { int a,b,sum; scanf(“%d%d”, &a, sum = a+b; printf(“%d”, sum); } 主函数 26 /*求圆的面积*/ float getArea(float r) #define PI 3.14159 { #include stdio.h float s; #include math.h float getArea(float r); s = (float)(PI * pow(r, 2)); int main(int argc, char* argv[]) return s; { } float s1,s2; float r1,r2; printf(“请输入第一个圆的半径:”); scanf(“%f”, s1 = 3.14159f * r1 * r1; printf(“\n第一个半径为%f的圆的面积为:%f\n”, r1,s1); r2 = 104.6f; s2 = getArea(r2); printf(“\n第二个半径为%f的圆的面积为:%f\n”, r2,s2); } 1、C程序基本框架 预处理命令及自定义函数声明 int main( ) { 说明部分 执行部分 } 自定义函数 C程序基本元素 ——函数/主函数 函数/主函数 ? main( ) { ……} ? ? ? C语言是一种函数式语言,它的一个函数实际上就是一个 功能模块——C程序的基本组成是函数。 一个C程序是由一个固定名称为main的主函数和若干个其 他函数(可没有)组成。 一个C程序必须有一个、也只能有一个主函数。 主函数在程序中的可以任意,但程序执行时总是从主 函数开始,在主函数内结束。 int main() { …… } C程序基本元素 ——函数/主函数 函数调用 ? ? C语言程序是通过函数的调用来完成复杂功能。 主函数可以调用其他各种函数(包括标准库函 数和用户自己编写的函数),但其他函数不要调 用主函数。其他函数相互之间遵循一定的规则是 可以相互调用的。 主函数main() 自定义函数 标准库函数 自定义函数 自定义函数 函数的调用 C程序基本元素——函数 其他函数 ? 标准库函数:随C语言一起提供的各种标准的 通用功能函数,只能调用(先文件包含:#include ) 。 例: 自编(定义)函数:必须先定义(声明),后调用。 例: ? 函数的一般形式 返回值类型 函数名(参数列表) { 语句 } float getArea(float r) { float s; s = (float)(PI * pow(r, 2)); return s; } C程序基本元素——变量/语句/代码段 ? ? 变量:存放数据的容器,有不同的数据类型。 语句:一个单一命令是一条语句(Statement),由分号(;) 结尾。 ? 代码段:用大括号({…… })围起来的多条语句构成一个 代码段。 C程序基本元素——编译预处理 编译预处理——宏定义 形式:#define PI 3.14159 PI —— 符号常量(宏名,最好用大写,以区别一般变量) 3.14159 ——宏体(可以是一个表达式) ? ? ? 作用:用简单符号代表宏体部份内容(编译时会先自动替 换),可用作常量定义或其他作用 意义:直观/多次使用/便于修改 注意: #define 可出现在程序的任一(作用范围:由此 行到程序末尾),宏定义不是C语句,不必在行末加分号, 否则会连分号一起置换。 编译预处理——文件包含 形式:#include stdio.h #include “stdafx.h” ? ? ? C语言是一种“装配式”语言,许多常规的工作如输入、 输出、数学函数等,往往事先由人做成各种“程序模 块”(.lib),并将其定义存放在各种所谓“头文件”(.h) 中。 文件包含的作用,就是根据需要把相应的某个“头文件” 定义所涉及的“程序模块”在编译时先整体嵌入所编的 程序中。 用户也可以将自己设计的程序模块等做成“程序模块” 及“头文件”,供其他程序“包含”(调用)。 使用“文件包含”功能的优点 ? ? ? 支持程序模块的共享 提高程序设计效率和程序可靠性 减少程序员重复劳动量 C提供了三百多个标准库函数,分别由若干个头文件进行 说明: ? stdio.h 标准输入/输出函数 ? math.h 数学函数 ? stdlib.h 常用函数 ? … 一个优秀的程序员不应是事无巨细都要从头做起的 “工匠”,而应是一个“策划师” + “组装师”。所 以 ,逐步熟悉并掌握常用函数的功能及使用,是学习 C程序设计的一个重要内容。 C程序基本元素——注释 ? 注释:为了增加程序的可读性而附加的说明性 文字,它们在编译时会被忽略。 1、单行注释 //…… ,从该符号至行末均为注释的内容 ? 2、多行注释 /*…… */,用来说明更多的内容,包括算法等. ? C程序基本框架——总结 ? ? ? ? ? ? C语言程序由一个或多个函数组成。C程序的各种 功能是通过函数调用来完成的。 每个C程序必须有一个、也只能有一个主函数 main()。 不管主函数在程序中的如何,程序执行总是从 主函数开始,在主函数内结束。 每条语句必须用分号“;”结束。 编译预处理命令(宏定义、文件包含)不是语句,行 末不能用分号结束。 C语言本身没有输入/输出语句,其功能须通过调用 相关函数来实现。 2、标识符和关键字 ? 标识符(Identifier) 程序员对程序中的各基本元素加以命名时使用的 命名记号,包括:数据类型名、变量名、常量名、 函数名、宏名、… ? ? 标识符的组成规则 C语言中,标识符是以字母,下划线( _ ) 开始的一 个字符序列,后面可以跟字母,下划线,数字。 的标识符 identifier userName User_Name define sys_ ? value room# _Name a%bc !abc name1 非法的标识符 2mail 关键字 ? 关键字(Key words):具有专门的意义和用途,不能 当作一般的标识符使用。C语言中的关键字有: int、 char、 float、 double、 short、 long、 unsigned、 struct、 union、 enum、 auto、 extern、 register、 static、 typedef、 goto、 return、 sizeof、 break、 continue、 if、 else、 do、 while、 for、 switch、 case、 deult、 void、 entry、 include、 define、 undef、 ifdef、 ifndef、 endif、 line 在 C++ 中,还会有一些新的关键字。不同语言的关键字不完 全相同,但基本相似。 关键字基本分类 ? 基本数据和返回值类型:int, void, return…… ? ? 构造数据类型定义: typedef, struct, union, … 控制流:if, else, switch, case, for, break, goto, … 编译预处理:include, define, … 变量长度:sizeof ? ? 2、标识符和关键字 注意: ? 在C语言中,标识符是区分大小写的。name和 Name是不同的标识符。 ? ? 所有的关键字都是小写字母构成的。 不必死记这些关键字,当理解每个关键词的含义 后,自然就记住了所有的关键词。 3、数据类型、变量和常量 ? 数据类型(Data Type) ? ? 基本数据类型(Primary Data Types) 构造数据类型(Composite Data Types) ? 常量(Constant) ? 变量(Variable) 3、数据类型、变量和常量 ——数据类型 ? 基本数据类型(Primary Data Types) ? 构造数据类型(Composite Data Types) 3、数据类型、变量和常量 ——基本数据类型 C语言中支持的基本数据类型包括: 数据类型说明 字符类型 整数类型 短整数类型 数据类型标识符 char int short 所占位数 8位(1字节) 其他 还可以用unsigned 来限定char类型和 与机器相关,现在通 所有整数类型。 常为32位(4字节) unsigned限定的数 int的一半 总是正数或零。 长整数类型 单精度浮点类型 long float int的2倍,但现在与 int一样,为32位 32位(4字节) 双精度浮点类型 无类型 double void 64位(8字节) 函数无返回值 一个数据类型所占的具体字节数,可以通过sizeof运算符来确定。 字符的存储通常用其二进制编码(如ASCII码/8位、汉 字内码/16位)来表示,所以字符数据类型char只占8位, 它可以表示一个ASCII字符,对于汉字字符,则需要将2 个char数据当作一个整体。 对于字符的显示,则需要操作系统的协助才能完成。 ? ? ? printf(“大学 Peking University”); char a = ‘a’; //a = 97, a的ASCII码 printf(“%c”, a); 变量和常量 数据是计算机程序处理的主要对象, 在程序中数据是以常量和变量的形式出 现。常量和变量的区别仅在于程序执行 过程中变量的值是可以改变的,而常量 的值不能改变。 ——常量 C中的常量值是用文字串表示的,它区分为不同的类型: ? 整型(int)常量: ①十进制:123,-123 ②八进制:以0开头,如:023,055 ③十六进制:以0x开头,如:0x20,0x7f ? ? ? ? 指数形式表示法 长整型(long)常量:123l,-123L 单精度(float)浮点常量:1.23f,-1.23e12f 双精度(double)浮点常量:1.23,-1.23e12 字符(char)常量:用单引号对括起来的一个字符,如‘a’ 注意:字符 ’、”、\不能直接用单引号对括起来。 ? 字符串常量:用双引号对括起来的一个字符序列,如 This is a constant string.。 ——变量 和数学中的变量有所不同,程序中的变量代表内存中 某个“存储单元”或某块内存区域(若干个连续的存储 单元),可以用来存放数据,通常用一个名字来标识。 在程序中使用变量,涉及到三种情况: 变量的定义:指定变量的数据类型,并用一个标识符来对 它命名,这个标识符就是变量名。 ?变量的赋值:把数值存放到某个变量所的内存区域。 ?变量的引用:使用某个变量中存储的数据。 ? ——变量定义 ? 格式: 数据类型 例: char a; int n; 变量名 [, 变量名2,变量名3……]; int x, y, z; ? 变量的名字必须是一个的标识符,每个变量的名字作 为它的唯一标识。 ? 变量的初始化——在定义变量的同时给它赋值。 ——变量赋值 ? 给变量指定一个数值的过程称为变量的赋值,这个过程可 以通过赋值语句完成: ? n = 26; ? x = 19; 注: ? 变量定义后,其初值是不确定的(内存区域里可能是有内 容的)。 ? 也可以在变量定义的同时对变量进行初始化: ? char a = ‘a’; ? int n = 5; ? int x, y=4, z; ? float score = 95.5; ——变量引用 ? 变量里存储的数据可以用来参与运算,这一过程 称为变量的引用。但在引用变量前,一定要先对变 量进行赋值,例如: int totalFee = 0 ; //变量赋值 int tuitionFee = 5000 ; int travelExpense = 300 ; int livingExpense = 1000 ; //变量赋值 //变量赋值 //变量赋值 int others = 1000 ; //变量引用 //变量赋值 totalFee = tuitionFee + travelExpense + livingExpense + others ; 例9.1 变量的使用 1 #includestdio.h 2 int main( ) 3 { 4 5 int USDollar = 0; int RMB = 0; USDollar = 20 ; …… … … 主存储器 USDollar 0 主存储器 USDollar RMB 0 0 6 7 8 9 } RMB = USDollar * 8 ; printf(“%d\n”,RMB); return 0; 主存储器 USDollar RMB 20 主存储器 USDollar RMB 20 160 0 …… …… 几种不同类型变量的定义示例 字符型变量定义示例: ? ? ? char c1; char c2 = ‘0’; \\ 无初值 \\ 赋初值为字符‘0’ \\ 用整数赋初值,是字符的ASCII码, char c3 = 100; \\ 此处为‘d’ ? 一些特殊字符的常量表示法: 在进行文字处理时,有些符号在屏幕上是不能显示出来的。 如:“回车”、 “退格” 、“制表符”等,在程序中也无法用 一个一般形式的字符表示,只能采用特殊形式来表示。 表示方法为:以“\”+字符。 ? 反斜线(Backslash) ‘\\’ ? 退格(Backspace) ‘\b’ ? 回车(Carriage return) ‘\r’ ? 进纸符(Form feed) ‘\f ’ ? 制表符(Form feed) ‘\t’ ? 换行(New line) ‘\n’ ? 单引号(Single quote) ‘\’’ ? 整型变量定义示例: ? short s = 10; ? ? ? ? ? int num1, num2; int x = 123, y; long len1, len2 = 3L; \\ 必须在数字后加l或L long y = 123L; \\ 必须在数字后加l或L long z = 123l; \\ 必须在数字后加l或L ? 浮点数变量定义示例: ? ? ? float len; float len1 = 127.0f; float len2 = 4.0e38F; \\ 必须在数字后加f或F \\ 错误!32位浮点数不能超过 \\ 3.6e38 (数值常量的科学计数法:1.0x108, 1.0e8 或 1.0E8) ? ? double score1; double score2 = 127.0; \\ 赋初值为127 4、运算符与表达式 C语言的运算符十分丰富,这使得C能够灵活的处 理各种运算。 ? 算术运算符:―(负号), +,―,*,/,%(取余数),++,―― ? ? ? ? ? 关系运算符: ,,=,=,= =,! = 逻辑运算符: !,&&, 位运算符: ,,&,,^,~ 赋值运算符: =,及其扩展赋值运算符如+=,―=,*=,/=等。 条件运算符: ? : 注意:关系运算符 = = 和 赋值运算符 = 的区别 4、运算符与表达式 ? 其它运算符 ? 分量运算符 ·,- (在结构数据类型及指针中用到) ? 下标运算符 [index] (在数组中用到) ? 数据长度运算符 sizeof (以字节为单位) ? ? int a; sizeof(int); sizeof(a); ? 分隔符 ? ? , (函数参数分隔,变量定义等) int a, b, c; int max( int a, int b, int c); int year = (int) ceil(x/2); scanf(“%d”, ? 强制类型转换运算符 (DataType) ? ? 函数调用运算符 () ? ? … 表达式 根据运算符的不同,表达式也有不同的类型: ? ? ? ? 算术表达式 (算术运算) 关系表达式 (主要用于条件判断) 逻辑表达式 (主要用于条件判断) 位运算表达式 (二进制逻辑运算) ? ? 赋值表达式 (与存储访问相关) 条件表达式 (用于条件判断) 算术运算与算术表达式 算术运算符: ―(负号), +,―,*,/,%,++,―― 说明: 1、/(除法运算符。如5/3 ) 若整数相除,结果取整。如5/3的结果为1;4/5结果 为0。 2、%(模运算符,或称求余运算符。两数相除,以余 数为结果,如7%4的值为3 )。 要求两个操作数均为整数。 算术运算与算术表达式 3、++ (自加)、―― (自减):变量的值加1或减1。 说明: 1)只适合于变量,不适合于常量或表达式,例如: 5++ 或 (a+b)-- 都是不正确的。 2)这两个运算符可用在变量之前或变量之后,如 i++ 和++i。对变量来说,这二种情况的效果都是一样 的,都是使变量i加1。 但在表达式中,则它们的含义不同: 如果运算符在前(前缀运算),先进行自加或自减运算, 再参与其他运算;如果运算符在后(后缀运算),先以原值参 与其他运算,然后自加或自减。 算术运算与算术表达式 例:设语句执行前,i=5; j = ++i; 执行后i=6,,j的值是6。(先给变量加1, 再使用变量) j = i++; 执行后i=6,j=5。(先使用变量,再给变 量加1) j = (i++)*(i++); 执行后i=7,j=25。 j = (++i)*(++i); 执行后i=7,j=49。 4、关系运算与关系表达式 关系运算就是两个数之间的比较 : (大于), (小于),= (大于等于),= (小于等于) ,如: x y, (x+1) = 4, (-3+a-b*5) = ((x+y)/z +(3*r/5)) = = (等于)、!= (不等于),如: x = = y, (x+y) != z 在关系运算中,若的关系不成立,则表达式的值为假, 否则。 在C语言中,没有其他语言中的布尔量(真:true,假: lse),而是用0表示假,用1表示线、逻辑运算与逻辑表达式 把多个关系表达式或者逻辑量连接起来,以表达多个条件, 这就需要进行逻辑运算。 C语言提供3种逻辑运算: && (逻辑与):当2个操作数都为非0或线(线(假),如:(x1) && (x=20) (逻辑或):当2个操作数有一个为非0或线(线(假),如:(x =1) (x20) ! (逻辑非):将一个非0或为线,如:!(xy) 说明: 1、逻辑运算符连接的表达式通常为关系表达式, 但也可以是任意表达式。例如: (x1) && (x=20) ——关系运算的结果作为操作数 (x=5)(y=0) ——赋值运算的结果作为操作数 2、 逻辑运算&&和连接的表达式是自左向右 求值的,一旦知道结果的真、假值,求值马上停止。 3、在判断一个逻辑量是否为“真”时,采取的标 准是: 如果其值是0就认为是“假”,如果其值 0就认为是“线、位运算与位运算表达式 位运算即按二进制位分别进行的运算。 & (按位与), (按位或),^ (按位异或),! (按位非) 例:3&8 35^9 00000011 & 00001000 00000000 00100011 ^ 00001001 00101010 移位运算 (左移):将二进制数值向左移动若干位,移出去的位 丢弃,空出的位用0填补。 例:32 结果:12 (右移),将操作数的二进制数值向右移动若干位, 移出去的位丢弃,空出的位用符号位(对有符号数)或0 (对无符号数)来填补。 例:-32 结果:-1 有符号数:有符号整数做位移运算时,符号位是不参与 移动的。左移时,空出的位用0填补;右移时,空出的位用 符号位填补。 无符号数:没有符号位,不管左移或右移,空出的位用0 填补。 位移运算的实质(在不发生溢出时):左移:xn,相当于 x* 2n 右移:xn,相当于 x/2n 赋值运算与赋值表达式 “=”是C语言的基本赋值运算符,基本的赋值表达式形 式为:“变量 = 表达式”,它将表达式的值赋给变量。 如: x = y+1, a=b=c=1 C语言中除了基本的赋值运算符外,还有一系列复合赋值 运算符: +=,―=,*=,/=,%=,=,=,&=,^=,=, 它们是由2个运算符组成,相应的赋值表达式形式为: “变量 op= 表达式”,它等价于基本赋值表达式: “变量 = 变量 op (表达式)”,如: ? x *= 2 等价于 x = x*2 ? x += y*2 等价于 x = x + (y*2) 条件运算与条件表达式 C语言中的条件运算符“? : ”可以构成条件表达式,其形 式为:“表达式1 ? 表达式2 : 表达式3” 求值过程:先求表达式1的值,若它不等于0(为线的值,此时,该值就是整个条件表达式的值; 若表达式1的值等于0,则 求表达式3的值,并作为整个条件 表达式的值。即表达式2和表达式3之中,只有一个表达式被 求值。例: z = (xy)? x : y 表达式计算中的数据类型转换 在表达式中常遇到不同类型数据之间进行 运算,如: 10+′a′+1.5-8765.1234*′b′ 在进行运算时,不同类型的数据要先转换 成同一类型,然后进行运算。转换的规则: “由低向高”, 如图所示。 表达式计算中的数据类型转换 也可以根据需要为某一类型(利用强制类型转 换运算符)。 强制类型转换的一般形式为: (类型名)(表达式) 例: (int)x (float)(a+b) 在把容量大的类型转换为容量小的类型时必须注意: ? 转换过程中可能导致溢出或损失精度 ? double a = 4.0e40; int b = (int)a; (int)23.7 == 23 //ba (为什么?) ? ? 浮点数到整数的转换是通过小数得到,而不是四舍五入 ? (int)-45.89f == -45 运算符的优先级和结合性 运算符的优先级:一个复杂的表达式值,往往要涉及不 同的运算符,在表达式求值时,其计算次序是要符合一定的 规则的,即不同运算符的先后次序是不同的。 1) 2) 3) 4) 5) 6) 7) 8) . , - , [ ] , ( ) ++ , -- , ! , ~ , -, sizeof *,/,% +, , , , = , = == , != & 9) 10) 11) 12) 13) 14) ^ && ?: = , += , -= , *= , /= , %= , ^= , &= , = = , = , 运算符与表达式 ——求表达式的值 !((-6/5/(3-8%4)*3%2/1)==0) ——结果为0 (1==0^1==1)((1+2*3/4%5==2)&&(1+2=4)) 未执行运算 ——结果为1 总结 ? 程序设计语言的组成 ? C程序基本框架:预编译处理、函数、语句、注释 ? C语言基本规范: ? 标识符、关键字 ? 数据类型、变量、常量 ? 运算符、表达式