《C Primer Plus》学习笔记(第五章到第六章)

本文详细介绍了C语言中的运算符、表达式和语句,包括while循环的工作原理、赋值运算符、类型转换规则以及typedef的应用。此外,还探讨了C语言的控制语句,如for循环和do while循环的使用,强调了循环条件的初始化、更新和测试的重要性,以及避免数组越界操作的注意事项。
摘要由CSDN通过智能技术生成

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

1.while循环原理
当程序第一次到达while循环时,会检查圆括号中的条件是否为真,为真会运行块(花括号以及被花括号括起来的部分),如果不用花括号会运行到下一个;为止,运行完后会继续回到入口部分检查条件。while适合用来处理一些循环次数不确定的循环

2.赋值运算符:=
‘=’号左侧的项必须是一个变量名,右值指的是能赋值给可修改左值的量,且本身不是左值,赋值的顺序是从左往右。
a=b=c=6;首先6赋值给c,c赋值给b,b最后赋值给a。

3.符号运算符:-和+
二元运算符需要两个运算对象才能完成操作 a=1+1;
一元运算符需要一个运算对象 a=-1;

4.除法运算符:
浮点数的除法的结果是浮点数,而整数除法的结果是整数,不进行四舍五入,比如:4/3=1,小数部分被丢弃叫做截断
要进行四舍五入可以 a=(int)(4/3.0+0.5);这里用到了强制类型转换(类型)
c99规定使用趋零截断

5.typedef
typedef double real;
real deal;
这样deal就是double类型的,相当于 double的别名是real

6.++i和i++
++i是先加后运算
i++是先运算后值加一

int i=0;
a=i++;//a的值为0
b=++i;//b的值为2

递增运算符的优点是运算效率更高,因为他和实际的机器语言指令相似
递减运算符和递增运算符的用法相似
注:如果一个变量出现在一个函数的多个参数中,不要对该变量使用递增或递减运算符。
如果一个变量多次出现在一个表达式中,不要对该变量使用递增和递减运算符。

int x=0;
y=(4+x++)+(6+x++)结果是10,因为只有完整的表达式运行完后x的值才会加一

7.类型转换
1.当类型转换出现在表达式时,无论是unsigned还是signed的char和short都会被自己转换成int,如果有必要会转换成unsigned int。
2.涉及两种类型的运算,两个值会被分别转换成两种类型的更高级别。
3.类型的级别从高至低依次是long double、double、float、unsignedlong long、long long 、unsigned long 、long、unsigned int、int。例外的情况是,当long和int的大小相同时,unsigned int比long的级别高。之所以short和char类别没有列出,是因为它们已经被升级到int或unsigned int。
4.在赋值表达式语句中,计算的最终结果会被转换成被赋值变量的类型。这个过程可能导致升级或者降级。
5.当作为函数参数传递时,char和short被转换成int,float被转换成double
类型的降级可能会导致数据的缺失或者截断

8.带参数的函数
变量名是函数私有的,即在函数中定义的函数名不会和别的相同名发生冲突
定义带一个参数的函数时,便在函数定义中声明了一个变量,或称为形式参数。然后,在函数调用中传入的值会被赋给这个变量。这样,在函数中就可以使用该值了。

习题
1.假设所有的变量的类型都是int,下列各项变量的值是多少:
a.x=(2+3)6; 30
b.x=(12+6)/2
3; 27
c.y=x=(2+3)/4; 1
d. y=3+2*(x=7/2); 9
2.假设所有的变量的类型都是int,下列各项变量的值是多少:
a.x=(int)3.8+3.3; 6
b.x=(2+3)10.5; 52
c.x=3/5
22.0; 0
d.x=22.0*3/5; 13

第六章:c控制语句:循环

一门语言应该提供以下3种形式的程序流:
1.执行语句序列
2.如果满足某些条件就重复执行语句序列(循环)
3.通过测试选择执行哪一个语句序列(分支)

1.伪代码
伪代码是一种用简单的句子表达程序思路的方法,它与计算机语言的形式相对应。伪代码有助于设计程序的逻辑。确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码。

2.真值
一般而言,所有的非零值都视为真,只有0被视为假。_Bool 里true为真
false为假

3.for循环
for语句使用3个表达式控制循环的过程,分别用分号隔开。initialize表达式在执行for语句之前只执行一次;然后对test表达式求值,如果表达式为真,执行循环一次;接着对update表达式求值,并再次检查test表达式。for语句是一种入口条件循环,即在执行循环之前就决定了是否执行循环。

for(initialize;test;update)
{
    statement
}

4.do while语句
do while语句创建一个循环,在expression为假或0之前重复执行循环体中的内容。do while语句是一种出口条件循环,即在循环体后才根据条件决定是否再次执行循环。因此循环至少执行一次。

do
    statement
while(expression);

一般情况而言,当循环涉及初始化及更新变量时,用for循环比较合适,而在其他情况下用while循环更好。

注意循环的测试条件要能使循环结束
确保循环测试中的值在首次使用之前已经初始化
确保循环在每次迭代都更新测试的值

5.嵌套循环
嵌套循环中的内层循环在每次外层循环迭代时都执行完所有的循环。

6.数组
数组可以作为一种存储多个相关项的便利方式
c编译器不会检查数组的下标是否正确
因此使用的使用要注意不要数组越界

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值