运算符、类型转换、流程控制语句
运算符
算术运算符:+ - * / %
/ %除数不能为0,否则程序会崩溃,浮点型除外。
关系运算符:< > >= <= == !=
10<n<100,结果永远为真(先把10和n比较,结果为1小于100 ,所以为真),运算规则与数学中不同。
0==a 常量放左边,变量放右边(防止出错)
关系运算符的结果是0或1,结果可以继续参与运算。
自变运算符:++/–
只有变量才能使用,功能是把变量自加或自减。
前++/–:先加减后运算
后++/–: 先运算在加减
一行代码中,不要过多使用(不同编译器对运算过程的解析是不同的)
逻辑运算符:&& | | !
运算前会把运算对象转换成逻辑值,0假,非零值真,负数也为真。
!A(单目运算符) 优先级最高
A || B
A && B 与或优先级同等
||和&&具有短路特性,当左边的值已经可以确定运算结果时,右边可以不再计算。但利用短路特性可以写出经典的分支结构。
当 n=100时,n赋值为0,
赋值运算符: = += -= /= …
N += 1 等价于n = n+1
三目运算符: a? b: c;
判断a的值,真执行b处代码,假执行c处理代码
类似于if ,else 语句,不同点是?:是运算符,而if,else是语句。三目运算符一定要有一个运算结果不能使用break,contine,return。(可以赋值)
字节运算符: sizeof
计算变量常量,数组的字节数和长度都可用。
只推算表达式结果类型,所需要的字节数,
位运算符: & | ^ << >>(我总是会把为运算符的与,或,非和逻辑运算符搞混)
类型转换
只有相同类型的数据才能在一起转换,当不同类型的数据在一条表达式中,编译器会先把数据进行转换,这叫做自动类型转换。转换规则:以不丢失数据为基础,适当浪费存储空间1.字节少的向多的转换,2.整型向浮点型转换。3.有符号向无符号转换
强制类型转换:(类型)数据,
注意:这种转换方式可能会造成数据丢失。
流程控制语句
分支结构
If语句
If(表达式)
{
表达式为真时执行此处代码
}
If(表达式)
{
表达式为真时执行此处代码
}
Else
{
表达式为假时执行此处代码
}
If(表达式1)
{
表达式1为真时执行此处代码
}
Else if(表达式2)
{
表达式为假时执行此处代码
}
开关语句(switch)
Switch(n)开关结构,括号中的n必须为整数,
{
Case 1:内容;break;
Case a … b:内容;break;判断一个范围(这是gnu编译器独有的)
Default:内容;break;
小括号中的数据会与 case后面的数据进行比较,break可以关闭执行开关。
}
如果每个case后面都加break,就形成了分支结构。
Default:当所有的case都没有匹配成功则打开执行开关; 无论写在什么位置,都最后匹配。
注意:每个case后都写一个break就形成分支结构。不能与continue搭配
for循环
当需要反复执行代码来解决问题时,这种结构叫循环结构
For([1];[2];[3])
{
[4];
}
1循环初始化,只执行一次
2判断条件,为真时执行4
3负责解决问题的代码,也叫循环体
4改变循环条件,防止变量四循环
For循环执行过程:1 2 4 3 2 4 3 2 4 3…2
For循环各种格式
For(;;])
{
死循环
}
For([1],[2],[3])
{
[4];
}
注意:for循环是一种功能强大的循环体,因此相比,所以使用一个循环变量来引导它运行; index->i,j,k,l
1.定义并初始化循环量
2.检查循环变量是否达到边界,如果为假则结束for循环。
3.循环变量自增或自减
4.解决问题
大括号问题:
1、建议上下对齐
2、循环体如果只有一样代码,大括号可以省略,但不利于拓展,一般商业代码要求。
循环嵌套:循环语句中包含循环语句,外层循环只执行一次。
条件为真时执行循环体,假时结束,相当于for的精简版;
While(条件)
{
循环体;
}
For(;😉
{
}
注意:for负责解决明确知道循环次数问题,而while负责解决只知道结束条件的问题
Do while
Do{
}while(条件);
特点:先执行循环体,在判断循环条件,循环体至少执行一次,
Int num=0;
Do{
Scanf(“%d”,&num);
}while(num!=1);
跳转
**Goto:**可以跳转到函数的任意位置,非常灵活,但可能会打破程序设计好的分支循环结构,很多公司禁止使用。
Loop1:
。。。。。。。。
Goto loop2;
Loop2:
。。。。。。。。
Loop后加冒号。
在驱动编程时,goto语句用的非常多,经常用来处理异常情况,这也是c语言为什么适合硬件的编程。
Break:
1在switch语句中用于关闭执行开关;
2.再循环语句中用于跳出循环,也可用于解决死循环,
3.只能跳出一层循环。
Continue:
1.只能用在循环语句中
2.结束本次循环,进入下次循环
Return:
结束函数的执行,跳转到函数的执行位置
返回一个结果给调用值。
总结
目前来说,没有遇到比较大的困难,学习的都是c语言打基础的东西,多看多做练习应该没有什么太大问题。