C Primer Plus 第6版 总结复习(5)

第5章 运算符、表达式和语句

循环简介

组织程序:是处理数据的另一个方面,让程序按正确的顺序执行各个步骤。

#define指令创建符号常量、const限定符创建不可更改的变量

/*此代码不全*/
shoe = 3.0;
while (shoe < 18.5) //"<",小于;
{
    //花括号内就是while的循环范围
}

while语句(迭代语句,又称结构化语句)三部分:①关键字while ②圆括号中是待测试的条件 ③如果测试条件为真,则执行while循环体中的语句。

tips:循环体中单条语句,无需花括号。

基本运算符

1.C用运算符表示算术运算,C没有指数运算符

2.C标准数学库提供了pow( )函数用于指数运算(例:pow(3.5 , 2.2) 表示3.5的2.2次幂)

3.C中的"=’'是一个赋值运算符,=号左边必须是一个变量名;"=="是“相等”

bmw = 10; //读作:把值10赋值给变量bmw,赋值行为从右往左。
const int TWO = 2;  //此处'='表示初始化。
/*不能给常量赋值,常量本身就是他的值。*/
4.数据对象、左值和右值

(1)赋值表达式语句的目的是把值储存到内存位置上,用于储存值的数据存储区域统称为数据对象

(2)标识对象的一种方法是使用变量名

(3)左值,用于标识特定数据对象的名称或表达式。可修改的左值,用于标识可修改的对象,术语为对象定位值

(4)右值,能赋值给可修改左值的量,本质是一个值,且本身不是左值。可以是常量、变量或其他可求值的表达式,又称为表达式的值

(5)被称为’项’的就是运算对象,即运算符操作的对象。

5.运算符

(1)二元运算符:需要两个运算对象才能完成操作,例:+ - * / ;

(2)一元运算符:用于标明或改变一个值的代数符号,只需要一个运算对象。

(3)C无平方函数,可以用while循环和乘法来计算。

(4)整数除法结果是整数,小数部分被丢弃,称为“趋零截断”;浮点数除法和浮点数整数(此处整数被编译器转换成浮点数)混合除法,结果都是浮点数。

(5)优先级:圆括号优先级最高;乘法和除法优先级高于加法和减法;共享统一运算对象的运算符,等级相同的从左往右;从左往右的结合律只适用于共享同一运算对象的运算符。

(6)sizeof运算符:以字节为单位返回运算对象的大小(1字节定义为char类型占用的空间大小),若运算对象是类型(如,float),则必须用圆括号将其括起来。size_t为sizeof返回值类型,为无符号整数类型,%zd为其转换说明,也可用%u、%lu。typedef机制允许程序员为现有类型创建别名。

(7)求模运算符%(求余数运算)只用于整数运算,给出其左侧整数除以右侧整数的余数,通常用于控制程序流。负数求模规则:第一个运算对象为负数,则求模结果为负;第一个运算对象是正数,则求模结果为正。

(8)递增或递减运算符:"+ +" “- -”,运算对象递增或递减1。

​ ①两者都有前缀和后缀两种模式,前缀则可视为"先使用n,再递增(减)";后缀则可视为"先递增(减)n,再使用"。单独使用递增或递减运算符时,前后缀结果一样。例:i++;

​ ②递增和递减运算符只能影响一个变量(或可修改的左值)

​ ③结合优先级仅次于圆括号

​ ④使用递增递减运算符的优点有生成机器代码效率更高,程序更美观

​ ⑤不要一次使用太多递(减)增运算符,编译器可以自行选择求值循序,会造成结果错误。如果一个变量出现在一个函数的多个参数中,不要对该变量使用递增或递减运算符;如果一个变量多次出现在一个表达式中,不要对该变量使用递增或递减运算符。

(9)强制类型转换运算符:在某个变量前面放置使用圆括号括起来的类型名,将其右侧值转换成括号中指定类型。例:mice = (int)1.6 + (int)1.7;

6.C表达式和语句

(1)表达式定义:由运算符和运算对象组成,可以是变常量或二者的组合。最简单的表达式是一个单独的运算对象。有些表达式由子表达式组成。

(2)表达式最重要的特性是:每个表达式都有一个值,故声明非表达式。例:q >3 ,次关系表达式的值是0或1。(此处与C++有所不同)

(3)语句,大部分以分号结尾,是C程序的基本构建块,一条语句相当于一条完整的计算机指令。

(4)语句是指令,指令不一定是语句。

(5)副作用:作用是对数据对象或文件的修改,是程序的主要目的。

(6)序列点:程序执行的点,在该点上,所有的副作用都在进入下一步之前发生。C语言中,语句的分号标记了一个序列点。任何一个完整表达式(即这个表达式不是另一个更大表达式的子表达式)的结束也是一个序列点。

(7)复合语句:亦称为块,是用花括号括起来的一条或多条语句。

7.类型转换

(1)类型级别从高至低:long double >double >float >unsigned long long >long long >unsigned long >long >unsigned int >int (例外:当long和int大小相同时,unsigned int比 long 级别高)

(2)当类型转换出现在表达式时,无论是unsigned 还是signed的char和short都会自动转换成int。从较小类型转换为较大类型,故这些转换称为升级

(3)当作为函数参数传递时,char和short被转换成int, float被转换成double。

(4)一些规则:①目标类型是无符号整型,且待赋的值是整数时,额外的位将被忽略。②目标类型是有符号整型,且待赋的值是整数,结果因实现而异。③目标类型为整型,待赋的值是浮点数,行为未被定义。④浮点类型 被降级为整数类型时,原浮点值会被截断。

8.参数和函数

(1)形参是变量,实参是函数调用传递提供的值,实参被赋给相应的形参。

(2)声明函数就创建了被称为形式参数的变量。变量名是函数私有的,即在函数定义中的函数名不会和别处的相同名称发生冲突。

(3)原型即是函数的声明,描述来了函数的返回值和参数。

(4)函数若不接受任何参数,函数头的圆括号中应该写上关键字(void)

(5)当把一种类型的值赋给另一种类型的变量时,值将被转换成与变量的类型相同。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值