新書推薦:
《
战胜人格障碍
》
售價:HK$
66.7
《
逃不开的科技创新战争
》
售價:HK$
103.3
《
漫画三国一百年
》
售價:HK$
55.2
《
希腊文明3000年(古希腊的科学精神,成就了现代科学之源)
》
售價:HK$
82.8
《
粤行丛录(岭南史料笔记丛刊)
》
售價:HK$
80.2
《
岁月待人归:徐悲鸿自述人生艺术
》
售價:HK$
59.8
《
女人的中国医疗史:汉唐之间的健康照顾与性别
》
售價:HK$
103.8
《
资治通鉴熊逸版:第四辑
》
售價:HK$
458.9
編輯推薦:
循序渐进:基础à进阶à实战
科学编排:基本语法à典型实例à编程练习à项目实战
学练结合:418个实例、3个项目案例(光盘中)、76个练习题
视频讲解:提供35.5小时多媒体教学视频
有问必答:提供QQ群、邮件和论坛答疑服务
超值DVD光盘,你值得拥有!
本书实例源文件
24小时配套教学视频
11.5小时进阶视频讲座
13个典型模块源文件
3个拓展项目案例源文件
“零点起飞学编程”其他图书推荐阅读:
《零点起飞学C语言》
《零点起飞学Java》
《零点起飞学C++》
《零点起飞学Visual C++》
《零点起飞学Visual Basic》
《零点起飞学C#》
《零点起飞学ASP.NET》
《零点起飞学PHP》
《零点起飞学HTML+CSS》
《零点起飞学JavaScript+jQuery》
《零点起飞学Java Web开发》
《零点起飞学Android开发》
《零点起飞学iPhone开发》
《零点起飞学Excel VBA》
《零点起飞学Linux C编程》
《零点起飞学SQL Server》
《零点起飞学MySQL》
《零点起飞
內容簡介:
杨佩璐编著的《零点起飞学C#》结合大量实例和实战案例,由浅入深、循序渐进地介绍C#程序设计的相关知识,尤其对面向对象的程序设计和一些难点做了重点介绍。本书特意提供了典型习题及教学PPT,以方便教学。另外,本书提供了大量的配套教学视频,还赠送了13个典型模块与3个项目开发的源代码及教学视频,以帮助读者更好地学习。这些视频和本书代码一起收录于配书光盘中。
本书共分4篇。第1篇为基础语法,介绍了Visual Studio
2010开发环境的搭建、C#基本概念、类型、变量、表达式和运算符、语句、命名空间、类、结构和数组等。第2篇为面向对象技术深入,介绍了接口、委托和事件、异常处理、泛型、分部类型和可空类型、赋值、迭代器、匿名方法、扩展方法、Lambda表达式和查询表达式等。第3篇为C#应用技术,介绍了字符串处理、日期和时间处理、IO流、目录和文件处理、Windows窗体编程、使用GDI+绘图,以及.NET
数据访问等。第4篇为项目案例实战,介绍了图书管理系统、P2P聊天工具、我的校内网等系统的开发过程,因为篇幅所限,本篇内容以PDF格式收录于配书光盘中。
《零点起飞学C#》适合C#入门与想提高编程技术能力的人员阅读,也可作为大中专院校及职业院校C#
程序设计课程的教材。另外,本书也可供C#语言爱好者和从业者作为实际工作中的参考书籍。
目錄 :
第1篇 基础语法
第1章 C#入门基础( 教学视频:40分钟)
1.1 C#概述
1.1.1 C#的发展
1.1.2 .NET框架
1.1.3 C#开发工具
1.2 搭建Visual Studio 2010开发环境
1.2.1 安装Microsoft Visual Studio 2010
1.2.2 配置集成开发环境(IDE)
1.2.3 熟悉集成开发环境
1.3 创建第一个控制台应用程序
1.3.1 创建Sample_1控制台应用程序
1.3.2 解决方案资源管理器
1.3.3 Program.cs文件
1.3.4 AssemblyInfo.cs文件
1.3.5 运行应用程序
1.4 创建第一个Windows窗体应用程序
1.4.1 创建Sample Windows窗体应用程序
1.4.2 解决方案资源管理器
1.4.3 相关文件简介
1.4.4 运行应用程序
1.5 小结
1.6 习题
第2章 C#基本概念( 教学视频:18分钟)
2.1 创建Hello World应用程序
2.1.1 创建hello.txt文本文件
2.1.2 创建HelloWorld类
2.1.3 添加Print方法
2.1.4 添加Main方法
2.1.5 调用Print方法
2.1.6 引入System命名空间
2.1.7 整理Hello World应用程序的代码
2.2 编译和运行Hello World应用程序
2.3 C#程序的概念扩展
2.4 小结
2.5 习题
第3章 类型( 教学视频:47分钟)
3.1 什么是类型
3.2 值类型
3.2.1 值类型的基础——System.ValueType类型
3.2.2 整数类型
3.2.3 浮点型
3.2.4 decimal类型
3.2.5 bool类型
3.2.6 枚举类型
3.2.7 结构类型
3.3 引用类型
3.3.1 类类型
3.3.2 对象类型
3.3.3 字符串类型
3.3.4 数组类型
3.3.5 接口类型
3.3.6 委托类型
3.4 装箱和拆箱
3.4.1 装箱
3.4.2 拆箱
3.5 小结
3.6 习题
第4章 变量( 教学视频:45分钟)
4.1 什么是变量
4.2 变量的类型
4.2.1 静态变量
4.2.2 实例变量
4.2.3 局部变量
4.2.4 值参数
4.2.5 引用参数
4.2.6 输出参数
4.2.7 数组元素
4.3 对变量赋值
4.4 变量转换
4.4.1 隐式转换
4.4.2 显式转换
4.5 小结
4.6 习题
第5章 表达式和运算符( 教学视频:59分钟)
5.1 运算的最小单位——表达式
5.1.1 表达式分类
5.1.2 this关键字
5.1.3 new关键字
5.2 运算的核心——运算符
5.2.1 算术运算符
5.2.2 自增、自减运算符
5.2.3 逻辑运算符
5.2.4 条件运算符
5.2.5 条件逻辑运算符
5.2.6 移位运算符
5.2.7 关系运算符
5.2.8 赋值运算符
5.2.9 运算优先级
5.2.10 类型转换
5.3 小结
5.4 习题
第6章 程序最小单位——语句( 教学视频:70分钟)
6.1 什么是语句
6.2 基本语句
6.2.1 没有功能的语句——空语句
6.2.2 标记语句
6.2.3 表达式语句
6.2.4 声明语句
6.2.5 块
6.3 选择语句
6.3.1 如果…就…——if语句
6.3.2 当…就…——switch语句
6.4 迭代语句
6.4.1 for语句
6.4.2 foreach语句
6.4.3 while语句
6.4.4 do语句
6.5 跳转语句
6.5.1 跳出语句break
6.5.2 继续下一次循环语句continue
6.5.3 返回语句return
6.5.4 抛出语句throw
6.6 其他语句
6.6.1 try语句
6.6.2 using语句
6.6.3 lock语句
6.6.4 checked和unchecked语句
6.7 小结
6.8 习题
第7章 命名空间( 教学视频:27分钟)
7.1 什么是命名空间
7.2 声明命名空间
7.3 .(点号)运算符
7.4 ::(双冒号)运算符
7.5 using指令
7.5.1 导入命名空间
7.5.2 创建命名空间或类型别名
7.6 .NET Framework常用命名空间
7.7 小结
7.8 习题
第8章 类( 教学视频:81分钟)
8.1 什么是类
8.1.1 声明类
8.1.2 设置类的访问权限
8.1.3 继承类
8.1.4 类、对象和实例化
8.2 类的组成
8.2.1 常量
8.2.2 字段
8.2.3 方法
8.2.4 属性
8.2.5 索引器
8.2.6 构造函数
8.2.7 析构函数
8.2.8 事件
8.3 小结
8.4 习题
第9章 结构( 教学视频:15分钟)
9.1 结构概述
9.2 结构成员
9.3 结构和类的区别
9.3.1 继承
9.3.2 this保留字
9.3.3 构造函数
9.4 小结
9.5 习题
第10章 数组( 教学视频:11分钟)
10.1 使用数组
10.1.1 数组的基准——维度数
10.1.2 声明数组
10.1.3 实例化数组
10.1.4 初始化数组
10.1.5 遍历数组
10.2 数组的类型
10.2.1 一维数组
10.2.2 二维数组
10.2.3 多维数组
10.2.4 交错数组
10.3 静态数组System.Array
10.3.1 常用属性概览
10.3.2 常用方法概览
10.3.3 获取数组长度
10.3.4 获取元素的值
10.3.5 设置元素的值
10.3.6 获取元素的索引
10.3.7 排序数组
10.3.8 反转数组
10.4 动态数组System.ArrayList
10.4.1 常用属性概览
10.4.2 常用方法概览
10.4.3 添加元素
10.4.4 移除元素
10.5 小结
10.6 习题
第2篇 面向对象技术深入
第11章 接口( 教学视频:35分钟)
11.1 使用接口
11.1.1 声明接口
11.1.2 设定接口的访问权限
11.1.3 继承接口
11.2 接口的组成
11.2.1 属性
11.2.2 索引器
11.2.3 方法
11.2.4 事件
11.3 实现接口
11.3.1 实现属性
11.3.2 实现索引器
11.3.3 实现方法
11.3.4 实现事件
11.4 抽象类和接口
11.5 小结
11.6 习题
第12章 委托和事件( 教学视频:33分钟)
12.1 使用委托
12.1.1 声明委托
12.1.2 向委托注册方法
12.1.3 实例化委托
12.1.4 构建委托的方法列表
12.1.5 调用委托
12.2 使用事件
12.2.1 声明事件
12.2.2 注册事件
12.2.3 移除事件
12.2.4 调用事件
12.3 小结
12.4 习题
第13章 异常处理( 教学视频:21分钟)
13.1 什么是异常
13.1.1 导致异常的原因
13.1.2 捕捉异常——try语句
13.1.3 异常处理流程
13.2 异常的基类System.Exception
13.3 常用异常类
13.4 小结
13.5 习题
第14章 泛型( 教学视频:29分钟)
14.1 什么是泛型
14.1.1 类型形参
14.1.2 设置类型形参的约束
14.1.3 声明泛型类
14.1.4 泛型类的成员
14.1.5 泛型类的静态字段
14.2 泛型方法
14.2.1 声明泛型方法
14.2.2 调用泛型方法
14.2.3 通过委托调用泛型方法
14.2.4 虚泛型方法
14.3 小结
14.4 习题
第15章 分部类型和可空类型( 教学视频:27分钟)
15.1 使用分部类型
15.1.1 声明分部类
15.1.2 声明分部结构
15.1.3 声明分部接口
15.1.4 处理同名成员
15.1.5 处理基接口
15.2 使用可空类型
15.2.1 HasValue和Value属性
15.2.2 GetValueOrDefault方法
15.2.3 bool?类型
15.3 小结
15.4 习题
第16章 赋值( 教学视频:36分钟)
16.1 使用隐型局部变量
16.1.1 声明隐型局部变量
16.1.2 使用隐型局部变量
16.2 使用对象初始化器
16.3 使用集合初始化器
16.4 使用匿名类型
16.5 使用匿名数组
16.6 小结
16.7 习题
第17章 迭代器、匿名方法和扩展方法( 教学视频:33分钟)
17.1 使用迭代器
17.1.1 创建非泛型迭代器
17.1.2 创建泛型迭代器
17.1.3 使用IEnumerator和IEnumerator接口
17.2 使用匿名方法
17.2.1 创建匿名方法
17.2.2 将匿名方法作为参数传递
17.3 使用扩展方法
17.3.1 声明扩展方法
17.3.2 导入扩展方法
17.3.3 调用扩展方法
17.4 小结
17.5 习题
第18章 Lambda表达式和查询表达式( 教学视频:62分钟)
18.1 使用Lambda表达式
18.1.1 输入参数
18.1.2 表达式或语句块
18.2 查询表达式
18.2.1 from子句
18.2.2 select子句
18.2.3 where子句
18.2.4 let子句
18.2.5 orderby子句
18.2.6 group子句
18.2.7 into子句
18.2.8 join子句
18.3 小结
18.4 习题
第3篇 C#应用技术
第19章 字符串处理( 教学视频:78分钟)
19.1 String和StringBuilder类
19.1.1 String类
19.1.2 StringBuilder类
19.2 使用不变字符串
19.2.1 插入字符串
19.2.2 移除字符串
19.2.3 替换字符串
19.2.4 联接字符串
19.2.5 分隔字符串
19.2.6 填充字符串
19.2.7 查找字符串
19.2.8 获取子串
19.2.9 格式化字符串
19.3 使用可变字符串
19.3.1 插入字符串
19.3.2 追加字符串
19.3.3 移除字符串
19.3.4 替换字符串
19.3.5 复制字符串
19.4 小结
19.5 习题
第20章 日期和时间处理( 教学视频:36分钟)
20.1 DateTime结构
20.1.1 字段
20.1.2 属性
20.1.3 方法
20.2 TimeSpan结构
20.2.1 字段
20.2.2 属性
20.2.3 方法
20.3 使用日期和时间
20.3.1 格式化
20.3.2 计算时间差
20.3.3 追加时间
20.4 小结
20.5 习题
第21章 IO流、目录和文件处理( 教学视频:76分钟)
21.1 IO流
21.1.1 文件流
21.1.2 内存流
21.2 操作文件
21.2.1 File类概览
21.2.2 FileInfo类概览
21.2.3 创建文件
21.2.4 写入文件
21.2.5 读取文件
21.2.6 移动文件
21.2.7 删除文件
21.3 操作目录
21.3.1 Directory类概览
21.3.2 DirectoryInfo类概览
21.3.3 创建目录
21.3.4 删除目录
21.3.5 移动目录
21.3.6 遍历目录
21.4 小结
21.5 习题
第22章 Windows窗体编程( 教学视频:76分钟)
22.1 什么是Windows窗体应用程序
22.1.1 创建Windows窗体应用程序
22.1.2 应用程序起始点
22.1.3 配置程序集信息
22.2 常见控件
22.2.1 标签控件
22.2.2 图片框控件
22.2.3 文本框和富文本框
22.2.4 按钮控件
22.2.5 单项按钮和复选框
22.3 MainForm窗体设计
22.3.1 配置窗体属性
22.3.2 添加控件
22.3.3 创建等待对话框
22.3.4 添加窗体事件
22.4 使用对话框
22.4.1 颜色对话框
22.4.2 字体对话框
22.4.3 打开文件对话框
22.4.4 保存文件对话框
22.4.5 目录浏览对话框
22.4.6 对话框窗体
22.5 容器
22.5.1 面板
22.5.2 组合框
22.5.3 TabControl控件
22.5.4 容器窗体
22.6 数据网格视图控件
22.7 使用菜单和工具栏
22.7.1 使用菜单
22.7.2 使用工具栏
22.7.3 使用上下文菜单
22.8 运行应用程序
22.9 小结
22.10 习题
第23章 使用GDI+绘图( 教学视频:89分钟)
23.1 GDI+的构成
23.1.1 Graphics类
23.1.2 点和区域
23.1.3 颜色
23.1.4 刷
23.1.5 画笔
23.1.6 字体
23.2 绘制线条、形状和文本
23.2.1 创建Chapter23窗体应用程序
23.2.2 Paint事件
23.2.3 绘制直线
23.2.4 绘制折线
23.2.5 绘制曲线
23.2.6 绘制虚线
23.2.7 绘制矩形
23.2.8 绘制三角形
23.2.9 绘制多边形
23.2.10 绘制椭圆
23.2.11 绘制饼状图
23.2.12 绘制文本
23.3 小结
23.6 习题
第24章 操作数据库( 教学视频:91分钟)
24.1 什么是ADO.NET
24.1.1 ADO.NET组成结构
24.1.2 ADO.NET基本对象
24.2 操作SQL Server数据库
24.2.1 创建Chapter24窗体应用程序
24.2.2 创建Data24数据库
24.2.3 连接数据库
24.2.4 读取数据
24.2.5 插入数据
24.2.6 修改数据
24.2.7 删除数据
24.2.8 使用DataGridView控件显示数据
24.2.9 使用ListView控件显示数据
24.2.10 使用TreeView控件显示数据
24.3 小结
24.4 习题
第4篇 项目案例实战
第25章 图书管理系统
25.1 系统总体设计
25.1.1 系统功能设计
25.1.2 图书管理系统组成
25.1.3 数据库设计
25.1.4 数据库实体类设计
25.1.5 应用程序主入口
25.1.6 应用程序全局变量
25.2 管理员模块
25.2.1 管理员登录
25.2.2 主窗口
25.2.3 分类管理
25.2.4 书籍管理
25.2.5 借阅书籍
25.3 学生和老师模块
25.3.1 学生或老师登录
25.3.2 主窗口
25.3.3 归还书籍
25.3.4 查看书籍信息
25.3.5 浏览书籍
25.3.6 借阅书籍
25.4 小结
第26章 P2P聊天工具
26.1 系统总体设计
26.1.1 系统功能设计
26.1.2 P2P聊天工具组成
26.2 P2P聊天工具类库实现
26.2.1 MainClass类
26.2.2 ViewMessage类
26.3 P2P聊天工具聊天窗口
26.4 小结
第27章 我的校内网
27.1 系统总体设计
27.1.1 系统功能设计
27.1.2 校内网组成
27.1.3 数据库设计
27.1.4 数据库实体类设计
27.1.5 标题模块
27.1.6 配置文件Web.config
27.2 常用功能模块实现
27.2.1 登录页面
27.2.2 主页面
27.2.3 我的好友
27.2.4 添加好友
27.2.5 我的相册
27.2.6 上传照片
27.2.7 我的日志
27.2.8 添加日志
27.3 小结
內容試閱 :
第5章 表达式和运算符
计算机的核心功能就是运算。为了让计算机完成对应的工作,编程语言将常见的运算都预先设定好,并使用相应的符号表示。这些符号就是运算符。将这些符号和我们要处理的数据结合起来,就构成了表达式。本章将详细讲解C#中的各种运算符和表达式。
5.1 运算的最小单位——表达式
表达式是一个由操作数(operand)和运算符(operator)构成的序列。运算符指定操作数的运算规则,即指示对表达式中的操作数进行什么样的运算。本节将详细介绍表达式。
5.1.1 表达式分类
在C#语言中,根据操作数的类型可以把表达式分为以下9种类别,如表5.1所示。
表5.1 C#中的操作数表
操作数类型
运 算
值
每一个值都有关联的类型
变量
每一个变量都有关联的类型。如果该变量定义了相关的类型,则称该变量为已声明类型的变量
命名空间
C#程序是利用命名空间组织起来的
类型
指定变量数据的存储方式和操作方法
方法组
表示一组方法,并可以通过实例调用方法组中的方法
属性访问
每个属性访问都有关联的类型,即该属性的类型
事件访问
每个事件访问都有关联的类型,即该事件的类型
索引器访问
每个索引器访问都有关联的类型,即该索引器的元素类型
Nothing
出现在调用一个具有void返回类型的方法时
下面介绍两个特殊的表达式:this和new。它们隐藏了操作符,都有其特殊的作用。使用this关键字可以限定名称相同的成员,new关键字作为new运算符时可以创建对象等。
5.1.2 this关键字
this关键字可以用来引用类的当前实例。this关键字存在3种常用用法:限定名称相同的成员、将对象本身作为参数和声明索引器。下面介绍this的第一种用法,后面两种用法会在相应章节介绍。
限定名称相同的成员是指在某一个类中,如果某一个成员的名称和其他对象(如参数等)的名称相同,那么可以通过this关键字限定该成员。
【示例5-1】下面创建一个名称为Program的类,并声明了一个名称为i的私有成员。
01using System;
02namespace 示例5_1
03{
04 class Program
05 {
06 private int
i;
07 public
Programint i
08 {
09
this.i =
i;
将i参数的值赋值给Program类的私有成员i
10 }
11 static void
Mainstring[] args
12 {
13
Program p = new Program123;
14
Console.WriteLine"i="+p.i;
15
Console.ReadLine;
16 }
17 }
18}
?注意:在Programint
i函数中,Program类的i成员的名称和i参数的名称相同,为了区分这两个对象,则需要使用this关键字来限定Program类的i成员。因此,this.i表示Program类的i成员。
分析:在“this.i =
i;”语句中,this.i表示Program类的私有成员i,i(“=”的右边表达式)表示i参数。因此,“this.i =
i;”语句将i参数的值赋值给Program类的私有成员i。运行结果如图5.1所示。
图5.1 this示例
5.1.3 new关键字
new关键字有3种用法,分别是作为new运算符、new修饰符和new约束。本节只介绍new作为运算符的用法,其他两种用法在相应章节继续学习。当new关键字作为new运算符时,它可以用来创建对象和调用构造函数、创建匿名类型的实例、调用值类型的默认构造函数等。
【示例5-2】下面使用new运算符创建一个类型为object的对象o。
object obj = new
object;
new运算符创建object类的对象obj
?注意:当new运算符创建类型的一个新实例时,但并非为该实例动态分配内存。对于值类型的实例而言,一般不需要分配该实例表示的变量之外的内存(值类型的实例本身会占用一定的内存)。因此,在使用new运算符创建值类型的实例时,是不会发生动态分配内存。
5.2 运算的核心——运算符
运算符是表达式很重要的一部分,它指示对表达式中的操作数进行什么样的运算,如+、–、*、、%等。根据运算符所需操作数的个数,可以把运算符分为一元运算符、二元运算符和三元运算符。本节将介绍有关运算符的知识。
5.2.1 算术运算符
算术运算是基本的数学运算。它包括加、减、乘、除。在C#中,分别使用+、–、*、表示。同时,C#还使用%表示不常用的求余运算。它们的基本语法格式如下:
left expression operator right expression
left expression和right
expression分别表示左操作数和右操作数,operator表示运算符,可以为*、、%、+和–。
【示例5-3】下面使用+运算符计算i和j两个操作数(均为int类型)的和,结果保存为result变量。运行结果如图5.2所示。
01using System;
02namespace 示例5_3
03{
04 class Program
05 {
06 static void
Mainstring[] args
07 {
08
int i=10, j=10;
09
int result = i + j;
使用+运算符计算变量i和j的和
10
Console.WriteLine"result="+result ;
11
Console.ReadLine;
12 }
13 }
14}
图5.2 +运算符示例
如果左、右操作数的类型相同,则它们的运算结果的类型和操作数的类型相同。当运算结果超出了该类型表示的范围时,如果使用了checked运算符,则引发System.OverflowException异常。如果使用了unchecked运算符,则不引发异常,但是其结果类型范围外的任何有效高序位都被放弃。
对于+运算符而言,如果其一个或两个操作数为string类型时,则+运算符执行字符串串联操作,而不是简单的算术运算。
【示例5-4】下面使用+运算符s1和s2(均为string类型)字符串串联起来,并保存为s3变量。
01using System;
02namespace 示例5_4
03{
04 class Program
05 {
06 static void
Mainstring[] args
07 {
08
string s1 = "abc";
09
string s2 = "def";
10
string s3 = s1 +
s2;
使用+运算符将两个字符串串起来
11
Console.WriteLine"s3="+s3;
12
Console.ReadLine;
13 }
14 }
15}
分析:s3变量的值为abcdef字符串。运行结果如图5.3所示。
图5.3 +运算符执行字符串串联操作示例
5.2.2 自增、自减运算符
自增、自减运算符都属于一元运算符,执行对操作数进行加1或者减1的操作。本节将详细介绍自增、自减运算符的使用方法。
1.++运算符
++运算符又称为增量运算符,其作用是对操作数进行加1。将++运算符放在操作数的左边,称该运算符为前缀增量运算符。否则,称为后缀增量运算符。语法如下:
++ expression
或者
expression ++
expression表示操作数。“++
expression”表达式首先计算expression的值,然后将其值增1,并作为该表达式的结果。“expression
++”表达式首先计算expression的值,并作为该表达式的结果,然后将expression的值增1。
【示例5-5】下面使用++运算符分别计算i变量的前缀增量和后缀增量的值,结果分别保存为j和k变量。
01using System;
02namespace 示例5_5
03{
04 class Program
05 {
06 static void
Mainstring[] args
07 {
08
int i = 10;
09
int j =
++i;
i先进行自加运算,将结果保存在变量j中
10
int k =
i++;
i先将值赋给变量k,再进行自加运算
11
Console.WriteLine"i="+i+",j="+j+",k="+k;
12
Console.ReadLine;
13 }
14 }
15}
分析:“++i”表达式执行之后,i变量的值为11,并作为该表达式的值。因此,j变量的值为11。“k =
i++”表达式首先获取i变量的值,并赋值给k变量,这时,k变量的值为11,然后再将i变量的值增1,因此i变量的值为12。最终,i、j和k变量的值分别为12、11和11。运行结果如图5.4所示。
图5.4 使用++运算符示例
2.– –运算符
– –运算符又称为减量运算符,其作用是对操作数进行减1。将–
–运算符放在操作数的左边,称该运算符为前缀减量运算符。否则,称为后缀减量运算符。语法如下:
-- expression
或者
expression--
expression表示操作数。“– –
expression”表达式首先计算expression的值,然后将其值减1,并作为该表达式的结果。“expression –
–”表达式首先计算expression的值,并作为该表达式的结果,然后将expression的值减1。
【示例5-6】下面使用– –运算符分别计算i变量的前缀减量和后缀减量的值,结果分别保存为j和k变量。