本章的标题是运算符,表达式和语句。主要研究如何处理数据。

示例代码展示了一个使用简单的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 读书笔记第五章的更多相关文章

  1. 《Linux内核设计与实现》第四周读书笔记——第五章

    <Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...

  2. 《Linux内核设计与实现》读书笔记——第五章

    <Linux内核设计与实现>读书笔记--第五章 标签(空格分隔): 20135321余佳源 第五章 系统调用 操作系统中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限 ...

  3. 《Linux内核设计与实现》读书笔记 第五章 系统调用

    第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...

  4. Getting Started With Hazelcast 读书笔记(第五章,第六章)

    第五章 监听 本章应该是Hazelcast的核心机制了,Hazelcast通过注册各种监听器获悉集群中其他应用对数据的修改,成员的加入,退出等. 分为3个层次. 1.EntryListener(对数据 ...

  5. 《linux内核设计与实现》读书笔记第五章——系统调用

    第5章 系统调用 操作系统提供接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行. 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层. 该层主要作用有三个: 为用户空间提供了 ...

  6. 深入Java虚拟机读书笔记第五章Java虚拟机

    Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...

  7. C primer plus 读书笔记第十一章

    本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一 ...

  8. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...

  9. C primer plus 读书笔记第四章

    本章的标题是字符串的格式化输入/输出,重点介绍输入和输出. 本章的第一段示例代码和上一张示例代码很相近,代码就不贴了,新出现的特性是使用了一个数组来存放字符串,C预处理命令和strlen()函数. 下 ...

随机推荐

  1. java工程中使用freemarker例子

    新建java project,引入freemarker.jar, 本工程是用的版本:freemarker-2.3.20 版本 java工程目录如下: test.ftl文件 HTML代码 name : ...

  2. android中百度地图定位的实现方法(仅适用于真机+WIFI联网环境)

    注意:此代码的环境是:真机(系统版本为Android4.2.2)+WIFI联网(才能实现最后的运行结果):使用虚拟机调试会出现各种问题. 第一步:下载SDK和申请Key 到百度的网站http://de ...

  3. libthrift0.9.0解析(五)之TNonblockingServer&THsHaServer

    本文是一边看代码一边写的,是真随笔,随看随下笔. 看TNonblockingServer,先看其父类AbstractNonblockingServer.一般来说,父类封装的都是通用的东西,具体的底层实 ...

  4. 【转】教你爱上Blocks(闭包)

    Block 与传统代码相比较更加轻量,调用简洁方便,而且可以返回多个参数,使用Block可以让代码更加具有易读性,而我们在写回调时,也可以直接写在函数内部,而不用再去写一个回调函数 Block 闭包 ...

  5. [转]Delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法

    procedure TForm1.Button1Click(Sender: TObject); var jpg: TJPEGImage; // 要use Jpeg单元 begin // 显示jpg大图 ...

  6. python下 help()使用方法

    查看python所有的modules:help("modules") 单看python所有的modules中包含指定字符串的modules: help("modules ...

  7. MapReduce中的排序

           hadoop的计算模型就是map/reduce,每一个计算任务会被分割成很多互不依赖的map/reduce计算单元,将所有的计算单元执行完毕后整个计算任务就完成了.因为计算单元之间互不依 ...

  8. js 实现win7任务栏拖动效果

    前言 在某个时刻, 我认识了一个朋友. 此人在我的教唆下, 踏上了js的不归路. 前天他问我, Win7任务栏拖动效果怎么实现. 我随口就跟他说, 这简单的一逼. 在我一晚上的折腾之后, 一份潦草的代 ...

  9. 【USACO 3.2.1】阶乘

    [描述] N的阶乘写作N!表示小于等于N的所有正整数的乘积.阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了.你的任务是找到阶乘最后面的非零位.举个例子,5!=1* ...

  10. CountDownLatch 和 CyclicBarrier 的运用及实现原理

    I.CountDownLatch 和 CyclicBarrier 的运用 CountDownlatch: 定义: 其是一个线程同步的辅助工具,通过它可以做到使一条线程一直阻塞等待,直到其他线程完成其所 ...