📄 王大刚--c语言编程宝典--5_ 运算符.htm
字号:
<BR> 例如: <BR>
100>99 返回1
<BR> 10>(2+10)
返回0 <BR>
!1&&0 返加0
<BR> 对上例中表达式!1&&0,
先求!1和先求1&&0将会等于出不同的结果, 那么何 <BR>者优先呢? 这在Turbo C中是有规定的。
有关运算符的优先级本节后面将会讲到。 <BR>
<P> 5.3 按位运算符 <BR> Turbo
C和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的 <BR>位操作有些相似。 <BR> Turbo
C中按位运算符有: <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<BR>
操作符
作用 <BR>────────────────────────────
<BR>
&
位逻辑与 <BR>
|
位逻辑或 <BR>
^
位逻辑异或 <BR>
-
位逻辑反 <BR>
>>
右移 <BR>
<<
左移 <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <BR>
按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符 <BR>型和整数型变量以及它们的变体, 对其它数据类型不适用。
<BR> 关系运算和逻辑运算表达式的结果只能是1或0。 而按位运算的结果可以取0 <BR>或1以外的值。
<BR> 要注意区别按位运算符和逻辑运算符的不同, 例如, 若x=7, 则x&&8 的值为
<BR>真(两个非零值相与仍为非零), 而x&8的值为0。 <BR>
移位运算符">>"和"<<"是指将变量中的每一位向右或向左移动, 其通常形式 <BR>为:
<BR> 右移: 变量名>>移位的位数
<BR> 左移: 变量名<<移位的位数
<BR> 经过移位后, 一端的位被"挤掉", 而另一端空出的位以0
填补, 所以, <BR>Turbo C中的移位不是循环移动的。 <BR> 5.4
Turbo C的特殊运算符 <BR> 一、"?"运算符 <BR>
"?"运算符是一个三目运算符, 其一般形式是: <BR>
<表达式1>?<表达式2>:<表达式3>; <BR> "?"运算符的含义是:
先求表达式1的值, 如果为真, 则求表达式2 的值并把 <BR>它作为整个表达式的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为
<BR>整个表达式的值。 <BR> 例如: <BR>
main() <BR> {
<BR> int x, y;
<BR> x=50;
<BR>
y=x>70?100:0; <BR> } <BR>
本例中, y将被赋值0。如果x=80, y将被赋值100。 <BR> 因此,
"?"运算符可以代替某些if-then-else形式的语句。 <BR>
<P> 二、"&"和"*"运算符 <BR>
"&"运算符是一个返回操作数地址的单目操作符。 <BR>
"*"运算符是对"&"运算符的一个补充, 它返回位于这个地址内的变量值, 也 <BR>是单目操作符。
<BR> 例如: <BR> main()
<BR> {
<BR> int i, j, *m;
<BR> i=10;
<BR>
m=&i;
/*将变量i的地址赋给m*/ <BR>
j=*m;
/*地址m所指的单元的值赋给j*/ <BR> } <BR>
上面程序运行后, i=10, m为其对应的内存地址, j的值也为10。 <BR>
<P> 三、","运算符 <BR> ","运算符用于将多个表达式串在一起,
","运算符的左边总不返回, 右边表 <BR>达式的值才是整个表达式的值。 <BR> 例如:
<BR> main() <BR> {
<BR> int x, y;
<BR> x=50;
<BR> y=(x=x-5, x/5);
<BR> } <BR> 上面程序执行后y值为9,
因为x的初始值为50, 减5后变为45, 45除5为9赋给 <BR>y。 <BR> <BR>
<P> 四、sizeof运算符 <BR>
sizeof运算符是一个单目运算符, 它返回变量或类型的字节长度。 <BR> 例如:
<BR> sizeof(double) 为8
<BR> sizeof(int) 为2
<BR> 也可以求已定义的变量, 例如: <BR> float
f; <BR> int i; <BR>
i=sizeof(f); <BR> 则i的值将为4。 <BR>
<P> 五、联合操作 <BR> Turbo C中有一特殊的简写方式,
它用来简化一种赋值语句, 适用于所有的 <BR>双目运算符。其一般形式为: <BR>
<变量>=<变量><操作数><表达式> <BR> 相当于
<BR> <变量><操作数>=<表达式>
<BR> 例如: <BR>
a=a+b
可写成 a+=b <BR>
a=a&b
可写成 a&=b <BR>
a=a/(b-c) 可写成 a/=b-c
<BR> 5.5 Turbo C运算符的优先级 <BR> Turbo
C规定了运算符的优先次序即优先级。 当一个表达式中有多个运算符 <BR>参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降低,
<BR>同一行优先级相同。 <BR> 例如:
<BR> 表达式
10>4&&!(100<99)||3<=5 的值为1
<BR> 表达式
10>4&&!(100<99)&&3<=5 的值为0 <BR>
<P>
Turbo C运算符的优先次序 <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
<BR>
表达式
┃优先级 <BR>────────────────────────────╂──── <BR> ()(小括号) [](数组下标)
.(结构成员) ->(指针型结构成员)┃ 最高 <BR>────────────────────────────┃ ↑
<BR> !(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址)┃ │
<BR>────────────────────────────┃ │ <BR> *(指针所指内容)
type(函数说明) sizeof(长度计算) ┃ │
<BR>────────────────────────────┃ │ <BR>
*(乘) /(除)
%(取模)
┃ │ <BR>────────────────────────────┃ │
<BR> +(加)
-(减)
┃ │ <BR>────────────────────────────┃ │
<BR>
<<(位左移)
>>(位右移)
┃ │ <BR>────────────────────────────┃ │
<BR> <(小于) <=(小于等于)
>(大于) >=(大于等于) ┃ │
<BR>────────────────────────────┃ │ <BR>
==(等于)
!=(不等于)
┃ │ <BR>────────────────────────────┃ │
<BR>
&(位与)
┃ │ <BR>────────────────────────────┃ │
<BR>
^(位异或)
┃ │ <BR>────────────────────────────┃ │
<BR>
|(位或)
┃ │ <BR>────────────────────────────┃ │
<BR>
&&(逻辑与)
┃ │ <BR>────────────────────────────┃ │
<BR>
||(逻辑或)
┃ │ <BR>────────────────────────────┃ │
<BR>
?:(?表达式)
┃ │ <BR>────────────────────────────┃ │
<BR> = +=
-=(联合操作)
┃ │ <BR>────────────────────────────┃ │
<BR>
,(逗号运算符)
┃ 最低 <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <BR> <BR>
<HR width="94%" color=#ee9b73 SIZE=1>
</TD>
<TD class=tt3 vAlign=bottom width="8%" bgColor=#e0e0e0><STRONG><A
href="http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/011.htm">后一页</A><BR><A
href="http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/009.htm">前一页</A><BR><A
href="http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/index.html">回目录</A><BR><A
href="http://www.cnread.net/cnread1/index.htm">回首页</A><BR></STRONG></TD></TR></TBODY></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -