您的位置:首页 > 编程语言 > C语言/C++

0602 c语言操作符和表达式

2016-06-15 09:21 267 查看
2016年06月02日学习日记c语言操作符和表达式

算数运算符中+ - *和数学中完全一样

/

1.整数除以整数结果是整数

2.如果操作数中有浮点型则结果一定为浮点型



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

++ --:自增自减 运算符

变量本身+1 -1操作

关于++ --:前++ 后++ 前-- 后--

区别

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

后:先使用,后(++--)

int i=1,j=1;
j=++i;//i = 2 j= 2
j=i++//i=3 j=2
printf(“i=%d,j=%d\n”,i,j);

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

nt 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:可以结束单次循环
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息