c语言的学习02
一、运算符
自变运算符:++/-- 使变量的值自动加、减1
前自变:++num --num 立即生效
后自变:num++ num-- 下一条命令有效
注意:不要在一行代码中出现多个自变运算符
算术运算符:+ - * / %
/ % 除数不能为0,否则会产生浮点数例外,核心已转储,程序直接挂掉
整数/整数 结果没有小数
关系运算符:> < >= <= == !=
比较的结果是0或1,比较的结果还能继续参与运算
int num = 0;
10<num<100; 永远为真,与数学的运算规则不同
if(num==10)
if(10==num)(建议采用这种,避免num = 10,进行赋值操作)
逻辑运算符:
&& || !
会先把运算对象转换为逻辑值,0转换假,非0值转换真
A && B:一假即假
A || B:一真即真
!A :求反
&& || 具有短路特性,当左边的值可以确定整个表达式结果是,右边的不再计算
三目运算符:运算对象有三个部分
A?B:C 判断A的值,如果为真者者执行B,为假执行C
该语句不能出现流程控制语句,因为它必须要有运算结果
赋值运算符:= += -= *= /=
a+=b a=a+b
位运算符:& | ~(按位取反) << >> ^(异或)
二、类型转换
自动类型转换;
只有相同类型的数据才能进行运算,不同类型的数据转换成相同类型才能进行运算
转换规则(以不丢失数据为基础,可以适当的牺牲一些空间)
1、字节少的向字节多的转
2、有符号的向无符号的转(数据呈环状 )
3、整型向浮点型转
强制类型转换:
(类型)数据 有丢失数据的可能,慎重使用
三、分支语句
if else switch case defualt
if (表达式)
{
表达式为真,则执行此处代码
}
if (表达式)
{
表达式为真,则执行此处代码
}
else
{
表达式为假,则执行此处代码
}
if (表达式1)
{
表达式1为真,则执行此处代码
}
else if(表达式2)
{
表达式2为真,则执行此处代码
}
else
{
所有表达式都为假,则执行此处代码
}
开关语句:
switch(n) //n可以是整数值、表达式,但是运算结果必须是整数
{
case vol://val 必须是整常量,如果val等于n,则打开执行开关
…
break;//关闭执行开关
default: //如果所有的case都没有匹配成功,则最后打开此执行开关,
default放在任何位置都不影响最后打开
}
四、循环语句
for循环语句:循环就是一段代码反复执行,达到你想要的效果,for是一种比较灵活且危险(与其他循环语句相比)的一种循环,一般使用一个变量来引导它的运行,这个变量叫做循环变量i,index。
for([1];[2];[3])
{
[4]
}
[1]、给循环变量赋初始值,C99标准可以定义循环变量-std=gnu99
在此处定义的循环变量,只能在for循环内使用
[2]、判断循环变量的值是否达到边界
[4]、被反复执行的代码,也叫做循环体
[3]、改变循环变量,防止死循环,一般对循环变量进行自加或自减
大括号问题:
1、建议上下对齐
2、循环体如果只有一行代码,可以省略
但是不利于代码的扩展,一般的商业代码要求大括号不能省
for循环的多种写法:
int i=0;
for(;i<10;i++)
{
//循环体
}
for(int i=0;i<10;)
{
//循环体
i++;
}
for(int i=0,j=0;i<10;i++)
{
//循环体
}
while语句:
while (条件)//条件为真时执行循环体,为假时结束循环
{
//循环体
}
while与for循环的区别:
for循环负责解决明确知道循环次数的问题
whlie循环负责只知道循环条件而不确定循环次数的问题
do while语句;
do {
//循环体
} while(条件);
适用于先执行循环体,再判断循环条件,该循环至少执行一次,适合先干活、后检查的特殊情况,例如:输入密码
循环嵌套:
循环语句中包含循环语句:
外层循环执行一次,内层循环n次
五、跳转语句
goto 可以在函数内任意跳转
他可能会破环已经设计好的分支循环语句,因此绝大多数的公司都禁止使用goto
但是他在驱动编程中非常适合处理异常
break:
1、如果在switch开关语句中执行关闭开关
2、跳出循环,只能跳出一层循环
continue:
结束本次循环,进入下一次循环
return:
1、返回一个数据给函数的调用者
2、结束函数的执行