C primer plus 读书笔记第五章
本章的标题是运算符,表达式和语句。主要研究如何处理数据。
示例代码展示了一个使用简单的while循环的代码,难度不大。
下面简单介绍本章的基本概念。
1.基本运算符。
基本运算符有:赋值运算符(C语言可以多重赋值,例如cheeta = tarzan = 68),加法运算,减法运算符,符号运算符(也称为一元运算符),乘法运算符,除法运算符(整数除法结果的小数部分会丢弃,而整数除浮点数的时候,编译器是先将整数转换为浮点数)
2.其他运算符
有sizeof,size_t,%(注意负数的情况),++,--(作者在书中说,假如你还用i = i + 1;这种语句,没人会觉得你是个C语言程序员。。。)
这里重点说明一下增量和减量运算符的优先级:只有圆括号比它们高。如下代码:y = 2; n = 3; nextnum = (y + n++) * 6; nextnum的值为30。这是因为只有当使用了n的值之后, n才会增加到4。优先级说明++只属于n,而不属于y + n。可以这么记:出现n++时,表示先使用n,再增加n的值;出现++n时,先将n的值增加,再使用它。由于C语言编译器可以选择先计算函数哪里的参数,所以你不知道编译器以什么顺序来操作。
原则:1.如果一个变量出现在同一个函数多个参数中,不要将增量或者减量运算用在它上面。2.当一个变量多次出现在一个表达式中时,不要将增量或者减量运算符用到它上面。
3.表达式和语句
C语言的一个重要属性是,每个C表达式都有一个值。像q = 5*3也是表达式,这个表达式作为整体的值为10, 6+( c = 3+8)这也是表达式,而且在C语言中合法,但是不建议使用。
一个语句是一个完整的指令,带有某种必须的标点来标识。一般简单语句可以分为4种:声明语句,赋值语句(赋值语句是表达式语句的特例),函数语句,结构化语句。
4.类型转换
类型转换的基本规则:1.当表达式有char和short类型时,都被自动转换为int,在需要的情况下,自动转换为unsigned int。在K&R C下,float自动转换为double。2.在包含两种数据类型的任何运算里,两个值都会被转换为两种类型里级别较高的。3.类型的级别从高到低:long double, double, float, unsigned long long, long long, unsigned long, long ,unsigned int和int。4.赋值语句中,计算的最后结果被转换为将要被赋值的那个变量的类型。5.char和short作为函数参数被传递时,会被转换为int, float会被转换为double。
5.带有参数的函数
要注意的是,原型是一个函数声明,它描述了函数的返回值和其参数。
练习题也比较简单,没有难点。。。
to be continued...
C primer plus 读书笔记第五章的更多相关文章
- 《Linux内核设计与实现》第四周读书笔记——第五章
<Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...
- 《Linux内核设计与实现》读书笔记——第五章
<Linux内核设计与实现>读书笔记--第五章 标签(空格分隔): 20135321余佳源 第五章 系统调用 操作系统中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限 ...
- 《Linux内核设计与实现》读书笔记 第五章 系统调用
第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...
- Getting Started With Hazelcast 读书笔记(第五章,第六章)
第五章 监听 本章应该是Hazelcast的核心机制了,Hazelcast通过注册各种监听器获悉集群中其他应用对数据的修改,成员的加入,退出等. 分为3个层次. 1.EntryListener(对数据 ...
- 《linux内核设计与实现》读书笔记第五章——系统调用
第5章 系统调用 操作系统提供接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行. 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层. 该层主要作用有三个: 为用户空间提供了 ...
- 深入Java虚拟机读书笔记第五章Java虚拟机
Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...
- C primer plus 读书笔记第十一章
本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一 ...
- C primer plus 读书笔记第六章和第七章
这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...
- C primer plus 读书笔记第四章
本章的标题是字符串的格式化输入/输出,重点介绍输入和输出. 本章的第一段示例代码和上一张示例代码很相近,代码就不贴了,新出现的特性是使用了一个数组来存放字符串,C预处理命令和strlen()函数. 下 ...
随机推荐
- MySQL user表root用户误删除后恢复
mysql user表root 用户误删除后恢复root用户 方法/步骤 1.停止mysql服务:在mysql安装目录下找到my.ini:在my.ini中找到以下片段[mysqld]:另起一行加入代码 ...
- oracle事务特性详解
原子性 事务是一个完整的操作.事务的各步操作是不可分的(原子的):要么都执行,要么都不执行. -- 创建表 create table account_money ( id number(4) not ...
- birt报表中使用多个数据集。
这个问题困扰了几天,也没搜到答案,由于工作需要,创建了两个数据集和两个表格,第一个数据集和表格之间没有任何问题.但是第二个数据集拖过去就显示不可用,除非拖到表格外面,当然也就没用了.一朋友说拖一个网格 ...
- Hibernate 一对多单向关联Demo
以Classes[班级]和Student[学生]为例的Demo Classes .java public class Classes implements Serializable { private ...
- 如何让Hadoop运行得更快一些
在数据处理方面,我们发现数据输入速度一般要比的数据处理速度快很多,这种现象在大多数据领域尤为明显.随着数据不断膨胀,相应的响应时间自然要有所增加,数据处理的复杂度也在不断提高.作为一个开发者,我们自然 ...
- window.onload() 等待所有的数据加载都完成之后才会触发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript 学习-变量的作用域和块级作用域
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Spring事务管理中@Transactional的参数配置
Spring作为低侵入的Java EE框架之一,能够很好地与其他框架进行整合,其中Spring与Hibernate的整合实现的事务管理是常用的一种功能. 所谓事务,就必须具备ACID特性,即原子性.一 ...
- Tr A
Problem Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第 ...
- WebApp之Meta标签 (关闭自动识别数字为电话号码或邮箱之类)
iPhone上的Safari(还有些webkit android手机浏览器)会自动对看起来像是电话号码的数字串(包括已经加入连字符或括号格式化过的)添加电话链接,点击之后会询问用户是否想要拨打该号码. ...