📄 c13.htm
字号:
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>算术运算符和表达式</title>
<script language="javascript">
var prePage="http://www.nec.sjtu.edu.cn/support/Course/C/c/c1/c/c1/c12.htm";
var nextPage="c/c2/c21.htm";
</script>
<link rel="stylesheet" href="../cstyle.css" type="text/css">
<bgsound src="../voice/c13.au" loop="1">
</head>
<body background="../img/mainback.jpg" bgproperties="fixed">
<h2 align="center"><font face="楷体_GB2312">1.3 <a name="_top"></a>算术运算符和表达式</font></h2>
<hr>
<h4>1. +、-、*、/、% 运算符</h4>
<blockquote>
<p> 和其它高级语言一样, C 语言分别用 + - * /
表示四则运算的加、减、乘、除运算符。假如表达式中有两个或两个以上不同的运算符,则按一定的次序来计算。这种次序被称作为优先级。在C
语言中, *、/ 的优先级高于 +、-
的。假如表达式中相同运算符有一个以上,
则可以从左至右或从右至左地计算它。这称作为结合性。+、-、*、/
的结合性都是 L-R 的(从左至右的)。</p>
<p> 算术运算符的结合性列表:</p>
<div align="center"><center><table border="6" width="300" bgcolor="#CCFFFF"
cellspacing="0" cellpadding="0" bordercolor="#FF9933">
<tr>
<td width="50%" align="center" bgcolor="#FF9933">运算符</td>
<td width="50%" align="center" bgcolor="#FF9933">结合性</td>
</tr>
<tr>
<td width="50%" align="center">- ++ --</td>
<td width="50%" align="center">右 - 左</td>
</tr>
<tr>
<td width="50%" align="center">* / %</td>
<td width="50%" align="center">左 - 右</td>
</tr>
<tr>
<td width="50%" align="center">+ -</td>
<td width="50%" align="center">左 - 右</td>
</tr>
<tr>
<td width="50%" align="center">=</td>
<td width="50%" align="center">右 - 左</td>
</tr>
<tr>
<td width="50%" align="center">op=</td>
<td width="50%" align="center">右 - 左</td>
</tr>
</table>
</center></div><p> </p>
<p> 请看运算符结合的例子: </p>
<p align="center"> 例一 <!-- Aftershock c131.swf 3=185 4=25 18 19 40 -->
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c131"
WIDTH="185" HEIGHT="25">
<param name="movie" value="../movie/c131.swf">
<param name="loop" value="false">
<param name="quality" value="autohigh">
<param name="menu" value="false">
<param name="bgcolor" value="#E6E6E6"><embed SRC="../movie/c131.swf" swLiveConnect="FALSE" WIDTH="185" HEIGHT="25" LOOP="false"
QUALITY="autohigh" MENU="false" BGCOLOR="#E6E6E6" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</object>
<!-- EndAftershock c131.swf --> </p>
<p align="center"> 例二 <!-- Aftershock c132.swf 3=185 4=25 18 19 40 -->
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c132"
WIDTH="185" HEIGHT="25">
<param name="movie" value="../movie/c132.swf">
<param name="loop" value="false">
<param name="quality" value="autohigh">
<param name="menu" value="false">
<param name="bgcolor" value="#E6E6E6"><embed SRC="../movie/c132.swf" swLiveConnect="FALSE" WIDTH="185" HEIGHT="25" LOOP="false"
QUALITY="autohigh" MENU="false" BGCOLOR="#E6E6E6" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</object>
<!-- EndAftershock c132.swf --> </p>
<p> 在 C 语言中, 取模运算符为 %,表达式 x % y 是 x 除以 y
所得的余数。如果 x 正好能被 y 整除的话, 那么结果是 0。例:45%10 =
5。</p>
</blockquote>
<p> </p>
<hr>
<h4>2.“-”单目运算符</h4>
<blockquote>
<p> 如果一个运算符的两个运算对象都是整型的,
那么结果就是整型的。 于是, 25/2 的结果不是 12.5, 是 12。请看下面的例子:</p>
<div align="center"><center><table border="0" width="415">
<tr>
<td width="248">main()<br>
{ <br>
int a=10, b=20, c;<br>
float e=12.0, d;<br>
c=-a+b;<br>
printf("%d\n",c);<br>
d=c+e;<br>
printf("%f\n",d);<br>
}</td>
<td width="159">请仔细想一想,这个例子的输出是什么,<br>
<!-- Aftershock c133.swf 3=80 4=60 19 40 --> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c133"
WIDTH="80" HEIGHT="60">
<param name="movie" value="../movie/c133.swf">
<param name="quality" value="autohigh">
<param name="menu" value="false">
<param name="bgcolor" value="#E6E6E6"><embed SRC="../movie/c133.swf" swLiveConnect="FALSE" WIDTH="80" HEIGHT="60"
QUALITY="autohigh" MENU="false" BGCOLOR="#E6E6E6" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</object>
<!-- EndAftershock c133.swf --> </td>
</tr>
</table>
</center></div><p> 如果一个运算符的某个运算对象是float
类型的, 那么结果就是float 类型的。于是, 25.0/2*2 的结果就 不是 25,
而是 25.000000。</p>
<p> 在上面的例子中, 我们用到了单目运算符“-”。
它给出了其运算对象的相反的值。</p>
</blockquote>
<p> </p>
<hr>
<h4>3.“++”、“--”运算符</h4>
<blockquote>
<p> 我们常常把 1 加到一个变量上,
或者从一个变量中减去 1。“++”、“--”的位置会影响运算的结果。让我们看看这种情况。</p>
<div align="center"><center><table border="5" width="529" bgcolor="#CCFFFF"
bordercolor="#FF9933" cellspacing="0" cellpadding="0">
<tr>
<td width="260" align="center" bgcolor="#FF9933">语句</td>
<td width="261" align="center" bgcolor="#FF9933">执行后变量结果</td>
</tr>
<tr>
<td width="260" align="center">int Var = 10;</td>
<td width="261" align="center">Var = 10</td>
</tr>
<tr>
<td width="260" align="center">++Var;</td>
<td width="261" align="center">Var = 11</td>
</tr>
<tr>
<td width="260" align="center">Var++;</td>
<td width="261" align="center">Var = 12</td>
</tr>
<tr>
<td width="260" align="center">--Var;</td>
<td width="261" align="center">Var = 11</td>
</tr>
<tr>
<td width="260" align="center">Var--;</td>
<td width="261" align="center">Var = 10</td>
</tr>
<tr>
<td width="260" align="center">int Var1 = 0;</td>
<td width="261" align="center">Var = 10 Var1 = 0</td>
</tr>
<tr>
<td width="260" align="center">Var1 = Var++;</td>
<td width="261" align="center">Var = 11 Var1 = 10</td>
</tr>
<tr>
<td width="260" align="center">Var1 = ++Var;</td>
<td width="261" align="center">Var = 12 Var1 = 12</td>
</tr>
<tr>
<td width="260" align="center">Var1 = Var--;</td>
<td width="261" align="center">Var = 11 Var1 = 12</td>
</tr>
<tr>
<td width="260" align="center">Var1 = --Var;</td>
<td width="261" align="center">Var = 10 Var1 = 10</td>
</tr>
</table>
</center></div>
</blockquote>
<p> </p>
<hr>
<h4>4.赋值运算符</h4>
<blockquote>
<p> 我们常常使用 i = i + j; 这样的语句。 C
语言提供了一种较之更为方便的表示方法: i += j;。对于其它运算符而言,
也有与之类似的表示方法。</p>
<div align="center"><center><table border="5" width="280" bgcolor="#CCFFFF"
bordercolor="#FF9933" cellspacing="0" cellpadding="0">
<tr>
<td width="134" align="center" bgcolor="#FF9933">语句</td>
<td width="138" align="center" bgcolor="#FF9933">表示</td>
</tr>
<tr>
<td width="134" align="center">i += j;</td>
<td width="138" align="center">i = i + j</td>
</tr>
<tr>
<td width="134" align="center">i -= j;</td>
<td width="138" align="center">i = i - j</td>
</tr>
<tr>
<td width="134" align="center">i *= j;</td>
<td width="138" align="center">i = i * j</td>
</tr>
<tr>
<td width="134" align="center">......</td>
<td width="138" align="center">......</td>
</tr>
</table>
</center></div>
</blockquote>
<p> </p>
<hr>
<h4>5.integer和float之间的转化</h4>
<blockquote>
<p> 当一个运算符具有不同类型的运算对象时,
必须进行类型转换。让我们来讨论一下整型和浮点型之间的转换。浮点型数
123.456789 转化为整型数为 123;整型数 123 转化为浮点型数为 123.000000。</p>
<div align="center"><center><table border="6" width="565" height="0" bgcolor="#CCFFFF"
bordercolor="#FF9933" cellspacing="0" cellpadding="0">
<tr>
<td width="187" rowspan="2" align="center" bgcolor="#FF9933">语句</td>
<td width="352" colspan="4" align="center" bgcolor="#FF9933">变量的值</td>
</tr>
<tr>
<td width="44" align="center" bgcolor="#FF9933">a</td>
<td width="48" align="center" bgcolor="#FF9933">b</td>
<td width="132" align="center" bgcolor="#FF9933">r</td>
<td width="124" align="center" bgcolor="#FF9933">f</td>
</tr>
<tr>
<td width="187" align="left">int a = 5 , b;</td>
<td width="44" align="center">5</td>
<td width="48" align="center">0</td>
<td width="132" align="center">未知</td>
<td width="124" align="center">未知</td>
</tr>
<tr>
<td width="187" align="left">float r = 3.3 , f;</td>
<td width="44" align="center">5</td>
<td width="48" align="center">0</td>
<td width="132" align="center">3.300000</td>
<td width="124" align="center">0.000000</td>
</tr>
<tr>
<td width="187" align="left">b = r;</td>
<td width="44" align="center">5</td>
<td width="48" align="center">3</td>
<td width="132" align="center">3.300000</td>
<td width="124" align="center">0.000000</td>
</tr>
<tr>
<td width="187" align="left">f = a;</td>
<td width="44" align="center">5</td>
<td width="48" align="center">3</td>
<td width="132" align="center">3.300000</td>
<td width="124" align="center">5.000000</td>
</tr>
<tr>
<td width="187" align="left">a = r + b;</td>
<td width="44" align="center">6</td>
<td width="48" align="center">3</td>
<td width="132" align="center">3.300000</td>
<td width="124" align="center">5.000000</td>
</tr>
</table>
</center></div>
</blockquote>
<p align="right"> </p>
<p align="center"><a href="http://www.nec.sjtu.edu.cn/support/Course/C/c/c2/c21.htm"><img src="../img/next.gif" width="145"
height="30" alt="next.gif (3633 bytes)" border="0"></a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -