第三章运算符和表达式<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1常用运算符
1)+,—,*,/,%(加,减,乘,除,求余均为双目运算符)
(除,求余运算只适用于整型运算,加,减,乘,运算还可以作为浮点数运算符,加,减运算还可以作字符运算)
2)自增自减运算
自增运算符作用于一变量,可使该变量的值增一,作为前缀时,其表达式的值为原变量值增一,作为后缀时,其表达式的值不变。(自减依然,变量值不管自增自减,前缀后缀,都进行自增/自减)
注意:自增自减运算符只能作用于变量,不能作用于常量和表达式。
3)关系运算符
<,<=,>,>=,==,!=(小于,小于等于,大于,大于等于,等于,不等于)
(前四个运算符优先级相同,后两个优先级相同。)
关系运算符组成的关系表达式的值是逻辑值,即真或假(1或0)
4)逻辑运算符
!,&&,||(非,与,或)
5)位操作运算符
~,&,|,^(求反,与,或,按位异或)
进行逻辑位操作时,先将操作数华为二进制数,然后再按下列运算规则进行。
求反:是将操作数中各个二进制位逐位求反,即1变0,0变1;
与:是将两个操作数每位相与,除了1与1为1外,其他均为0;
或:是将两个操作数每位相或,除了0或0为0外,其余均为1;
按位异或:是将两个操作数每位相加,不考虑进位,即两位相同的为0,两位不同的为1。
移位运算符:用来将某个操作数像某个方向移动指定的二进制位数。
>>表示右移运算符
<<表示左移运算符
举个例子:
4>>2的值为1
解释一下:4的二进制代码为0100,往右移2位变为0001
(右移运算时,移去的位被弃掉,左端补0或补符号位;
左移运算时,移去的位被丢掉,右端一律补0。)
6)赋值运算符(给变量赋值)
+=,-=,*=,/=,%=,&=,|=,^=,>>=,<<=
(加赋值,减赋值,乘赋值,除赋值,取余赋值,位与赋值,位或赋值,位异或赋值,右移赋值,左移赋值)
7)其他运算符
三目运算符:d1?d2;d3(先计算d1,如果d1的值是非0,则整个表达式的值是d2的值;如果d1的值是0,则整个表达式的值是d3的值。)
逗号运算符:逗号表达式的值是组成它的最后一个表达式的值。
Sizcof运算符:(用来求得某种类型或某种变量所占内存的字节数)
格式如下:sizeof({类型说明符}或{变量名})
如:printf(“%d\n”,sizeof(char));
取地址运算符:(用来获取某个变量的地址值)
格式如下:&(变量名)
取内容运算符:(用来间接获取某变量的值。即获取该运算符所作用的指针所指向的变量的值。)例如:
Int a=5, *p=&a;(*p的值是5.即指针p的内容是5。)
2运算符的优先级
先说断口诀“去掉一个最高级,去掉一个最低级,一二三和赋值”(优先级由左至右)
解释一下:
最高级:括号,元素,成员;
最低级:逗号;
一:单目运算符;
二:双目运算符;
三:三目运算符;
赋值:赋值运算符。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
3表达式(常量,变量,函数和运算符组合起来的有意义的式子)
合法的表达式经过计算后都具有一个确定的值和类型。
1) 算术表达式(算术表达式的类型由参与算术表达式的个操作数的类型决定。)
2) 关系表达式(由关系运算符组成的表达式,关系表达式的值为0或1,其类型为int型)
3) 逻辑表达式(由逻辑运算符组成的表达式,逻辑表达式的值为0或1,其类型为int型)
4) 赋值表达式(由赋值运算符组成的表达式。)
两大特点:
1.具有副作用:除了改变变量值外,还改变表达式本身的值。
2.结合性从右向左。
5) 条件表达式(条件表达式功能相当于if语句。)
6) 逗号表达式(将若干个独立的表达式连接起来的表达式,其值和类型均为最后一个表达式的值和类型,顺序是自左至右。)
转载于:https://blog.51cto.com/2948229/1158528