0602 c语言操作符和表达式

来源:互联网 发布:淘宝店怎么认证 编辑:程序博客网 时间:2024/05/16 14:21

2016年06月02日学习日记c语言操作符和表达式
算数运算符中+ - *和数学中完全一样
/
1.整数除以整数结果是整数
2.如果操作数中有浮点型则结果一定为浮点型

对于“%”运算,操作数不可以为浮点型,不能有浮点类型数参与

++ --:自增自减 运算符
变量本身+1 -1操作
关于++ --:前++ 后++ 前-- 后--

区别
前:先(++--),后使用
后:先使用,后(++--)

int i=1,j=1;j=++i;//i = 2 j= 2j=i++//i=3 j=2printf(“i=%d,j=%d\n”,i,j);int num=100;while(0<=(num—)){}printf(“%d\n”,num);//   输出-2nt num=100;while(0<=(—num)){}printf(“%d\n”,num);//   输出-1

=
赋值运算是将原变量的值拷贝到新变量中(传值赋值),原变量的值改变时,新变量的值并不会随之改变。

二元复合运算符 += -= *= /= %=
eg:int num=10;
num +=100;//num=num+100

sizeof:用来计算大小、是一个运算符、不是函数

bool:真(非0)假(0) 只有0位假,其余全为真

逻辑运算符 &&与 ||或 !非
逻辑运算符取值结果:bool(true、false)
&&:exp1&&exp2->bool
逻辑与运算,只有当两边表达式都为真,结果为真,否则结果为假(见假既假)
&&前一部分为假(0),后一部分不被计算
||:exp1||exp2->bool
逻辑或运算,只有当两边表达式都为假,结果为假,否则结果为真(见真既真)
&&前一部分为真(非0),后一部分不被计算

条件表达式 if
if(exp1) :如果expo为true,程序执行if后面{}(block),否则忽略{}(block)

3目运算符
n=a>b:a:b;
如果a>b,取值a赋值给n,否则取值b赋值给n。

类型转换
显式类型转换(强制类型转换)
(类型)exp1
eg :
float f=3.4f;
int i=(int)fl
注意不要把“字符”强制转换成数字类型

运算变量类型不同,先转换成同类型,然后运算
低精度向高精度进行转换eg:int和long型运算时,先把int转成long型后再进行运算
char short计算时要先转换成int
在赋值运算中,赋值号两遍的数据类型不同时,赋值号右边的类型将转换为左边的类型。如果右边的数据类型精度的长度长于左边场时,右边将丢失一部分数据,这样会降低精度,类型转换不存在四舍五入

控制流副本
if 如果if后表达式成立,执行block,否则忽略block
if…else 如果if后表达式成立,执行if后面block,否则执行else后面的block
if…if…if如果某个表达式成立,执行其后block,下边if继续执行(效率低)
if-else-if-else为多选一的嵌套结构,测试多个表达式。一旦满足某个表达式,则执行其后代码后,if选择终止。

switch:表达式值和case后面常量做匹配,如果相等、执行其block、结束选择
1、case后面必须是一个整型(包括char)的常量(只能是int、char、枚举类型)对于其他类型需使用if语句。
2、case后的各常量表达式的值不能相同,否则会出现错误。
3、break关键字适用于跳出switch选择结构。
4、default语句是党所有的case都不能与switch中的表达式的值相匹配时执行。

for(exp1;exp2;exp3){}
exp1:对变量初始化;(可不写)
exp2:判断
exp3:改变控制变量

while其实是对for进行了拆分(先判断后执行)
exp1;
while(exp2)//exp2成立、执行block 否则结束循环
{
exp3; 循环体内一定要改变控制变量 否则死循环
}
exp1;
do {exp3}while(exp2)(先执行一次 再判断)
break
break语句的特点
(1)用于开关语句switch中国年:
可使程序调出switch结构,继续执行switch之后的语句。
(2)用于循环语句中:
可使程序终止循环,继续执行循环之后的语句。如果有多层循环,只调出break所在着一层。通常break语句与if语句一起在使用:既满足某个条件时跳出循环。

1、赋值操作符(=) a = b; a:左值 b:右值
左值:必须为变量 赋值表达式的值为左值

2、i = i-5; <=> i -= 5; -= - 优先级

a *= 10;<=> a = a*10;
a /= 20;<=> a = a/20;

3、逻辑运算符 &&(逻辑与) ||(逻辑或) !(逻辑非)
a&&b a、b两个操作数可以是变量、常量或者表达式
逻辑数据:真(一切非0数据都为真) 假(0为假)
a b 表达式
真 真 真
真 假 假
假 假
注意:在逻辑与表达式中,如果第一个操作数的值为假,则编译器不再处理第二个操作数,表达式的值为假。

a||b
a b 表达式
假 假 假
假 真 真
真 真
注意:在逻辑或表达式中,如果第一个操作数为真,则编译器不再处理第二个操作数,表达式的值为真

!a
a 表达式
真 假
假 真

4、关系操作符 > < >= <= ==(关系等号) !=
注意:判断两个数是否相等,使用关系等号(==),而不是赋值符号(=)

!a a!=0 a==0
a
真 假 真 假
假 真 假 真

5、sizeof(操作数);//求操作数在内存中占用的字节数
操作数:变量、常量、类型 sizeof(int); sizeof(i) sizeof(1); %lu

6、 优先级
单目>算术>关系>逻辑>赋值
a+b-(c*d)

7、三目 ?: a>b?a:b;
8、类型转换:显示类型转换(强制类型转换–强转)、隐式类型转换
强转 (类型)数据; 消除警告
隐式类型转换:1、如果一个表达式中既有bool数据,又有整型数据,则bool数据会被隐式转换为整数(其中true->1 false->0);2、如果一个表达式中既有char数据,又有整数,则char数据会被隐式转换为整数(a:97 A:65) ‘a’+10:107 ;3、 低精度会被隐式转换为高精度数据(float->double) 3.1

9、程序 中的三大结构:顺序结构、选择结构、循环结构
选择结构:if…else elseifs switch
循环结构:for、while、do…while
break、continue

(1)、if…else
if(判断条件)
{
语句
}
else
{
语句
}//块或者复合语句

(2)、elseifs
(3)、switch
switch(表达式)
{//标签
case 常量表达式1:复合语句;
case 常量表达式2:复合语句;

default:复合语句;
}
注意:表达式的值必须为整数或者能隐式转换为整数的值
case标签值必须为整数或者能隐式转换为整数的值
break;可以用在switch选择结构和循环结构中
bool char 枚举

(4)、for循环
for(表达式1;表达式2;表达式3)
{
语句;
}//复合语句—循环体
表达式1:初始化循环控制变量;表达式2:判断条件 表达式3:修改循环控制变量 注意:表达式2如果省略,则表示判断条件永真
健壮性

(5)、while循环

while(条件表达式)
{

}//循环体(有可能执行0次)
循环控制变量

(6)、do…while循环
do{

}while(条件表达式);
do…while:先执行循环体,再判断条件,循环体至少会执行一次; while:先判断条件,循环体有可能一次都不执行。

(7)、break:可以退出整个循环结构 continue:可以结束单次循环

0 0
原创粉丝点击