📄 9.5.2.htm
字号:
<html>
<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>
<BODY>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.5.1.htm'" ></td>
<td>
<img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.5.2_2.htm'" ></img></td>
</tr>
</table>
<br><br>
<font class="title2"><b>9.5.2 到达_定值</b></font>
<table>
<tr>
<td>    </td>
<td class="content">
<p>
<font class = "definition2">变量x的定值</font>:是一个语句,它赋值或可能赋值给x。
</p>
<p>
例如:
</p>
         d1: i := 5 <br>
         d2: j := i * i <br>
<p>
语句d1是对变量i的定值;语句d2是对变量j的定值。
</p>
<p>
<font class = "definition2">x的无二义定值</font>: 最普通的定值是对x的赋值或读值到x中的语句。这些语句真正对x定一个值,所以称为x的无二义的定值。
</p>
         d1: i := m - 1 <br>
         d2: j := n <br>
         d3: a := u1 <br>
<p>
语句d1、d2、d3分别是对变量i、j、a的无二义定值。
</p>
<p>
<font class = "definition2">x的二义定值</font>: 也还有一些语句,它们可能对x定值,叫做二义定值。最常见的形式有:
</p>
<p>
1. 把x作为参数的过程调用(值参数除外)或者所调用的过程可以访问x,因为x在此过程的作用域内。还要考虑"别名"的可能性,x虽然不在该过程的作用域内,但由于另一个变量作为参数传递或在此作用域内而引起x被定值。</p>
<p>
2. 通过引用x的指针对x赋值。例如:如果q可能指向x的话,赋值*q:=y是x的定值。
</p>
<p>
<font class = "definition2">定值d到达一点P</font>: 我们说定值d到达一点p,指如果有路径从紧跟d的点到达P,并且在这条路径上d没有被"注销"。
</p>
<p>
直观上,如果某个变量a的定值d到达P,那么P引用的a的最新定值可能是在位置d的定值。如果沿着这条路径的某两点间有读值进a或对a的赋值,那么就注销变量a的那个定值。注意,只有a的无二义定值注销a的其它定值。如果在d到p的一条路径上,出现对变量a的二义定值,那么,变量a在d的定值仍到达p。
</p>
</td>
</tr>
</table>
<br>
<table align=right width=300>
<tr>
<td>
<img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.5.1.htm'" ></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.5.2_2.htm'" ></td>
</tr>
</table>
</BODY>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -