linux学习笔记7.25
代码编写原则:高内聚(功能相对独立,模块化),低耦合(功能联系少)
转义字符:
‘/’是转义符号
字符 | 效果 |
---|---|
‘ \n ’ | 换行 |
‘ \t ’ | 把输入内容按8个符号位一格,将光标跳到下一个格 |
‘ \b ’ | 光标退格一格 |
‘ \r ‘ | 光标移动到本行开头 |
’ \f ‘ | 换页 |
’ \\ ‘ | 显示“ \ ”符号 |
’ \‘ ’ | 显示“ ’ ”符号 |
’ \" ’ | 显示“ " ”符号 |
’ \ddd ‘ | 以八进制数的形式表示一个字符(d代表任意八进制数字) |
’ \xff ‘ | 以十六进制数的形式表示一个字符(f代表任意16进制数) |
运算符和表达式:
运算符:
算数运算:
如+
(加),-
(减),*
(乘),%
(求余),/
(除)
注意:
1.算数运算要考虑结合性和优先级。优先级高的必定先结合。
2.同一优先级运算是,由运算符规定的方向进行结合
3.不同优先级运算时,高优先级先结合
除法运算的注意事项:
1.两个整数相除时,其效果相当为整除(即保留整数位)
2.除法中,除数不能为0
求余运算的用途:
1.判断奇偶性:
将一个数除2取余(即x%2
),若取得的余为1,则为基数。取余为0,则是偶数。
2.取一定范围内的数:1
将一个数取n的余数,则取余后的数的范围为【 0 ~ N-1】
求余运算的注意事项:
1.除数不能为0
2.运算数不能为浮点型,只能为整数
3.求余结果的正负取决与&符号的前面一位的正负
自增运算符:
‘++’ ,‘- -’(类比++)
1.a++和++a的区别:
a++是先用后增,++a是先增再用.
2.a++的原理:
由于a++是先取后增,在自加时,系统临时开辟了一个空间来存放自加后的数值,原空间的数据在经过运算取用之后才将自加后的数值来覆盖原空间,再将临时空间销毁。(临时空间称为匿名空间)
注意
1.在参与到别的运算中这两句话才适用,单独使用时无区别
2.其运算数必须是一个可修改的变量2
经典辨析:
(1)
i + + + + + i 是如何计算的?
贪心法:从左往右尽可能多的将字符结合成语言运算符。
i++是所能组成最大的自增运算符,因此可结合为: ( ( ( i++ ) ++ ) +i )
(2)
int i=2;
printf("%d,%d",i,i++);
上述代码中输出的值为 3,2
原理:printf打印的过程中,其计算方向是从右往左,先是计算i++,自增之后才打印左侧的i
其中存在一个问题:由于计算机中未规定自加运算的时间和打印的时间,不同计算机可能会出现printf打印完了之后才进行自加运算,因此需要避免这样的写法。
赋值运算符:
1.赋值符号“=”:
`就是赋值运算符,其运算指的是将右边的值赋给左边的变量。
顺序从右往左
//int a
//a = 0(其既是一个表达式也是对a的赋值运算,其中表达式是有值的,其值为为0,类型为a的类型)
复杂案例:
a=b=c=10 其可以看作是(a=(b=(c=10))),从右往左进行运算
2."+/- ="
型赋值运算:
类比
// a+=1 ; 相当于 a= a+1
不同类型间的混合赋值:
精度 | 类型 |
---|---|
高精度给低精度造成精度丢失 | 长类型给短类型造成高位截断 |
低精度给高精度无影响 | 短类型给长类型需要符号位扩展(有符号时) |
逗号运算(顺序求值运算符):
运算顺序从左往右。
语法如下:
//(表达式1,表达式2, 表达式3, 表达式4) 代码在执行过程中所有表达式都要运算一边并通过开辟匿名空间存储临时计算出的值。
//printf(“%d”,(表达式1,表达式2, 表达式3, 表达式4) )其中最后打印出来的取决于最后一个表达式
表达式:
定义:由运算符和运算数构成的字符序列。
注意:表达式都是有值的,其值有对应的数据类型
隐式类型转换:
表达式中存在多种精度的数据类型,则其表达式中的类型转换如下图所示。分为两个方向,精度从低到高转换,类型从右往左转换。
意义是保证数据不会溢出
强制类型转换:
语法:(数据类型)运算数
eg: float i = 3.14;
printf(“%d”,(int)i);
其结果为 int 型 的 3
其中(int)只是一种运算符,其没有改变原i的数值和类型。
编程出错的两种情况:
1.编译报错:则是编写代码时语法存在错误,需要检查代码问题。
2.运行报错:代码逻辑上出现错误,需要检查代码中的逻辑情况。
😐 😄 😄 😄 😄 😄 😮
//time(NULL)---用于取时间,使得种子函数产生不同种子
//srand() -----取种子值,以使rand()函数产生随机值
//rand()-----产生随机值
for(循环条件)
{
srand(time(NULL));
printf(“%d”,rand()%100;(%100用来将随机值处理后变成0到100的值)
}
上方循环的意义是产生随机的0到100的数字