首页 >> 民生法规

程序设计从零开始之语句呢

民生法规  2021-08-24 13:30 字号: 大 中 小

处理很多情况都应有一定的准则约束 上面虽然看起来很复杂,但依旧是一个单句,应该注意当写了一个“else”时,编译器向上寻找最近的一个“if”以和其匹配,因此上面的“else”是和“if( a 10 )”匹配的,而不是由于上面那样的缩进书写而和“if( a )”匹配,因此b *= a;只有在a大于等于10的时候才执行,而不是想象的a为零的时候。

还应注意前面书写的if( a ) long c;。这里的意思并不是如果a非零,就定义变量c,这里涉及到作用域的问题,将在下篇说明。

switch 这个语句的定义或多或少地是因为实现的原因而不是和“if else”一样由于逻辑的原因。先来看它的格式:switch(整型数字)语句。

上面的整型数字和if语句一样,只要是一个数字就可以了,但不同地必须是整型数字(后面说明原因)。然后其后的语句与前相同,只要是语句就可以。在语句中,应该使用这样的形式:case 整型常数1:。它在它所对应的位置定义了一个标号,即前面goto语句使用的东西,表示如果整型数字和整型常数1相等,程序就跳转到“case 整型常数1:”所标识的位置,否则接着执行后续的语句。

long a, b = 3;

switch( a + 3 )

case 2: case 3: a++;

b *= a;

上面就表示如果a + 3等于2或3,就跳到a++;的地址,进而执行a++,否则接着执行后面的语句b *= a;。这看起来很荒谬,有什么用?一条语句当然没意义,为了能够标识多条语句,必须使用复合语句,即如下:

long a, b = 3;

switch( a + 3 )

{

b = 0;

case 2:

a++; // 假设地址为3003

case 3:

a--; // 假设地址为3004

break;

case 1:

a *= a; // 假设地址为3006

}

b *= a; // 假设地址为3010

应该注意上面的“2:”、“3:”、“1:”在这里看着都是整型的数字,但实际应该把它们理解为标号。因此,上面检查a + 3的值,如果等于1,就跳到“1:”标识的地址,即3006;如果为2,则跳转到3003的地方执行代码;如果为3,则跳到3004的位置继续执行。而上面的break;语句是特定的,其放在switch后接的语句中表示打断,使程序跳转到switch以后,对于上面就是3010以执行b *= a;。即还可如此:

switch( a ) if( a ) break;

由于是跳到相应位置,因此如果a为-1,则将执行a++;,然后执行a--;,再执行break;而跳到3010地址处执行b *= a;。并且,上面的b = 0;将永远不会被执行。

查看本文来源

门窗十大名牌加盟
商洛白癜风医院哪家好
石家庄白癜风重点医院
推荐资讯