## C语言——对于操作符的理解 ##
在C语言中,操作符对于程序的实现至关重要,以下内容是我对于操作符的理解。
1.算术操作符:
“+” 用法示例 :rexp+rexp
结合性:L–R
是否控制求值顺序:否
“-” 用法示例:rexp-rexp
结合性:L–R
是否控制求值顺序:否
“*” 用法示例:rexp*rexp
结合性:L–R
是否控制求值顺序:否
“/” 用法示例:rexp/rexp
结合性:L–R
是否控制求值顺序:否
“%” 用法示例:rexp%rexp
结合性:L–R
是否控制求值顺序:否
“++” 用法示例:lexp++与++lexp
结合性:lexp++是(L–R) , ++lexp是(R–L)
是否控制求值顺序:否
“–” 用法示例:lexp–与–lexp
结合性:lexp–是(L–R),–lexp是(R–L)
是否控制求值顺序:否
**注意:**
/是求商,而%是求余数。
%只能作用于两个操作数都是整型(int),其他既可以作用于整型也可以作用于浮点数。
2、移位操作符:
&& 左移操作符:左边丢弃,右边补零;
&& 右移操作符:a、逻辑移位,左边用零填充,右边丢弃; b、算数移位,左边用原来值的符号位填充,右边丢弃。
注意:一般是算数移位。
3、位操作符:
“&”
按位与:有0就为0,全1才为1。
“|”
按位或:有1就为1,有0就为0.
“^”
按位异或:相同为0,相异为1。
4、赋值操作符:
“=”
将右边的值赋值给左边。
注意:
复合赋值符:‘+=’ ‘-=’ ‘*=’ ‘/=’ ‘%=’ ‘>>=’ ‘<<=’ ‘&=’ ‘|=’ ‘^=’
例如:‘x+=2’等同于‘x=x+2’,其他同理。
5、单目操作符:
“!” 逻辑反
“+” 正值
“&” 取地址符
注意:求数组长度length = sizeof(a)/sizeof(a[0]);
“~” 对二进制数按位取反
“++”前置后置++
“类型” 强制类型转换
6、关系操作符:
“>”
“>=”
“<”
“<=”
“!=”不相等
“==”注意在if()语句中的使用。
7、逻辑操作符:
“&&”
逻辑与,注意与按位与的区分,比如:1&2——>0;1&&2——>1。
“||”
逻辑或,注意与按位或的区分,比如:1|2——>3;1||2——>1。
8、条件操作符:
表达式1?表达式2:表达式3
也就是说,如果表达式成立,就执行表达式2,如果不成立,执行表达式3。比如下面简单的例子:
if(a>5)
b=3;
else
b=-3;
这里的a>5就相当于表达式1, b=3是表达式2, b=-3是表达式3,可以写成:
a>5?b=3:b=-3