5.赋值操作符
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。
复合赋值符
+=
-=
*=
/=
%=
右>>=
左<<=
&=
|=
^=
这些运算符都可以写成复合的效果。
intmain{inta=3;a=a+3;a+=3;a=a>>3;a>>=3;a=a^5;a^=5;return0;}
6.单目操作符
6.1单目操作符介绍
逻辑反操作!
负值-
正值+
取地址&
sizeof操作数的类型长度(以字节为单位)
对一个数的二进制按位取反~
–前置、后置–
++前置、后置++
间接访问操作符(解引用操作符)
(类型)强制类型转换*
intmain{intflag=5;if(flag)//flag为真做什么{}if(!flag)//flag为假做什么{}return0;}intmain{inta=10;int*p=&a;//&取地址操作符*p=20;//解引用操作符(间接访问操作符)//intarr[10];//&arr;//取出数组的地址return0;}intmain{inta=10;printf('%d\n',sizeofa);printf('%d\n',sizeof(a));printf('%d\n',sizeof(int));intarr[10]={0};printf('%d\n',sizeof(arr));printf('%d\n',sizeof(arr[0]));intsz=sizeof(arr)/sizeof(arr[0]);printf('%d\n',sz);return0;}intmain{inta=3;a=10;a+3=15;//errreturn0;}intmain{inta=0;//00000000000000000000000000000000//11111111111111111111111111111111//11111111111111111111111111111110//10000000000000000000000000000001//printf('%d\n',~a);return0;}intmain{inta=3;//00000000000000000000000000000011//00000000000000000000000000001000a|=(1<<3);printf('%d\n',a);//00000000000000000000000000001011//11111111111111111111111111110111a&=(~(1<<3));printf('%d\n',a);return0;}intmain{inta=10;//intb=--a;//前置--,先--,后使用intb=a--;//后置--,先使用,后--printf('a=%db=%d\n',a,b);//printf('%d\n',++a);//前置++,先++,后使用//printf('%d\n',a);//intb=a++;//后置++,先使用,再++//intb=a,a=a+1;//printf('a=%db=%d\n',a,b);return0;}问题代码intmain{inta=1;intb=(++a)+(++a)+(++a);printf('%d\n',b);return0;}intmain{floata=3.14f;intb=(int)a;//intb=int(a);//errreturn0;}
6.2sizeof和数组
voidtest1(intarr[]){printf('%d\n',sizeof(arr));//(2)}voidtest2(charch[]){printf('%d\n',sizeof(ch));//(4)}intmain{intarr[10]={0};charch[10]={0};printf('%d\n',sizeof(arr));//(1)printf('%d\n',sizeof(ch));//(3)test1(arr);test2(ch);return0;}
问:
(1)、(2)两个地方分别输出多少?40,4(该环境为X86,X64结果为8)
(3)、(4)两个地方分别输出多少?10,4(该环境为X86,X64结果为8)
7.关系操作符
关系操作符
1.>
2.=
3.<
4.<=
5.!=用于测试“不相等”
6.==用于测试“相等”
这些关系运算符比较简单,但要注意在编程的过程中==和=不小心写错,导致的错误。
8.逻辑操作符
逻辑操作符有哪些:
&&逻辑与
||逻辑或
区分逻辑与和按位与
区分逻辑或和按位或
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
intmain{inta=3&&0;//0//printf('%d\n',a);inta=2||0;//1printf('%d\n',a);return0;}
逻辑与和或的特点:
&&操作符左边为假,右边不再计算
||操作符左边为真,右边不再计算
9.条件操作符
exp1?exp2:exp3
9.1练习1
1.if(a>5)b=3;elseb=-3;
转换成条件表达式,是什么样?
intmain{inta=0;intb=0;scanf('%d',&a);b=((a>5)?3:-3);printf('%d\n',b);return0;}
9.2练习2
使用条件表达式实现找两个数中较大值
intmain{inta=0;intb=0;scanf('%d%d',&a,&b);intm=(a>b?a:b);printf('%d\n',m);return0;
联系客服