Fosdccf.blog.chinaunix.net
sdccf
全部博文(19283)
Linux酷软(214)
tmp(0)
PostgreSQL(93)
Solaris(383)
AIX(173)
SCOUNIX(575)
DB2(1005)
Shell(386)
C/C++(1187)
MySQL(1750)
Sybase(465)
Oracle(3695)
Informix(548)
HP-UX(0)
IBM AIX(2)
Sun Solaris(0)
BSD(1)
Linux(8597)
SCO UNIX(23)
2011年(1)
2009年(125)
2008年(19094)
2007年(63)
clifford
linky521
曾德标
fengzhan
leon_yu
mcuflowe
yt200902
guanyuji
GY123456
snow888
carlos94
丸喵喵
sean229
cxunix
可怜的猪
cqxc413
xzzgege
wb123456
分类: C/C++
2008-04-15 20:35:08
跳转语句——goto前面已经说明,源代码(在此指用C++编写的代码)中的语句依次地转变成用长度不同的二进制数表示的机器代码,然后顺序放在内存中(这种说法不准确)。如下面这段代码: long a = 1; // 假设长度为5字节,地址为3000a += 1; // 则其地址为3005,假设长度为4字节b *= a; // 则其地址为3009,假设长度为6字节上面的3000、3005和3009就表示上面3条语句在内存中的位置,而所谓的跳转语句,也就是将上面的3000、3005等语句的地址放到前面提过的指令寄存器中以使得CPU开始从给定的位置执行以表现出执行顺序的改变。因此,就必须有一种手段来表现语句的地址,C++对此给出了标号(Label)。写一标识符,后接“:”即建立了一映射,将此标识符和其所在位置的地址绑定了起来,如下: long a = 1; // 假设长度为5字节,地址为3000P1:a += 1; // 则其地址为3005,假设长度为4字节P2:b *= a; // 则其地址为3009,假设长度为6字节goto P2;上面的P1和P2就是标号,其值分别为3005和3009,而最后的goto就是跳转语句,其格式为goto <标号>;。此语句非常简单,先通过“:”定义了一个标号,然后在编写goto时使用不同的标号就能跳到不同的位置。应该注意上面故意让P1和P2定义时独占一行,其实也可以不用,即: long a = 1; P1: a += 1;P2: b *= a;goto P2;因此看起来“P1:”和“P2:”好象是单独的一条定义语句,应该注意,准确地说它们应该是语句修饰符,作用是定义标号,并不是语句,即这样是错误的: long a = 1; P1: { a += 1; P2: b *= a; P3:} goto P2;上面的P3:将报错,因为其没有修饰任何语句。还应注意其中的P1仍然是3005,即“{}”仅仅只是其复合的作用,实际并不产生代码进而不影响语句的地址。
跳转语句——goto前面已经说明,源代码(在此指用C++编写的代码)中的语句依次地转变成用长度不同的二进制数表示的机器代码,然后顺序放在内存中(这种说法不准确)。如下面这段代码:
上一篇:C++程序设计从零开始之语句 (2)
下一篇:C++程序设计从零开始之语句 (4)
登录 注册