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()函数. 下 ...
随机推荐
- Ext4 简单的treepanel
转载:http://blog.csdn.net/zyujie/article/details/8208499 最近在学习Ext4,记录一些有关Ext4实现控件的方法: Ext4的treePanel和之 ...
- android对象序列化Parcelable浅析
一.android序列化简介 我们已经知道在Android使用Intent/Bindler进行IPC传输数据时,需要将对象进行序列化. JAVA原本已经提供了Serializable接口来实现序列化, ...
- 苹果新政,禁止开发者在App中加入检查更新功能
今天妥妥的被拒了,苹果更新了新政策,不能在应用中出现检测更新的功能.AppStore会自动提醒用户更新. 去掉更新按钮,之后再尝试下看能通过不能
- iOS 中Window优先级的问题
在项目中,视频播放时候遇到网络切换需要弹出AlertView提醒用户,忽然发现转屏的时候播放View加到KeyWindow的时候把AleryView挡住了.如图 因为转屏的时候视图是直接加载到 [UI ...
- 关于模板中的动态取值 ---反射与javascript脚本编译
在项目中经常遇到一个问题,打印word或者打印excel的时候,我们经常使用一对一的赋值或者批量替换的方式来对模板进行修改. 但是现在遇到两种场景: 1.取值是通过自定以方法进行取值的. 如:一个销售 ...
- JS中区分参数方法
实现功能:在使用cocosjs制作游戏过程中,很多东西都可以重复使用,例如菜单栏等等.今天尝试写了一个自定义的Js文件用作菜单方便以后使用. 将菜单按钮,以及触发事件作为参数生成一个层 直接在游戏中使 ...
- Object Storage(Swift)安装过程——Havana
自从看了Havana安装文档有关Swift的安装一节,发现H版的安装过程与以前还是有些差别的.不过大致过程还是那些.下面简单介绍下我们安装的过程吧,具体请参考官方文档http://docs.opens ...
- 深入浅出理解QTimeLine类
网上找了下QTimeLIne类的介绍,要么就是代码一贴自己看去,要么就是说不到重点,正巧自己项目遇到这个类,在这里写一下,给需要的同学看下. 因为我最近需要有动画方面配合时间间隔触发QGraphics ...
- case 后面可以接汉语
switch($_POST['rtype']){ case "图片": $type="image";break; c ...
- 使用HTML+CSS,jQuery编写的简易计算器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...