| 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛 |
 
 
 
您现在的位置: 编程中国 >> 技术教程 >> 开发语言 >> C++ >> C++技术资料 >> 正文
  ►  C++程序设计从零开始之语句
C++程序设计从零开始之语句
作者:未知    阅读人次:……    文章来源:未知    发布时间:2006-4-2    网友评论()条
 

  还应注意C++提出了一种特殊语法,即上面的<数字1>可以不是数字,而是一变量定义语句,即可如此:for( long a = 1, b = 1; a < 10; ++a, ++b );。其中就定义了变量a和b。但是也只能接变量定义语句,而结构定义、类定义及函数定义语句将不能写在这里。这个语法的提出是更进一步地将for语句定义为记数式循环的过程,这里的变量定义语句就是用于定义此循环中充当计数器的变量(上面的a)以实现循环固定次数。

  最后还应注意上面写的<数字1>、<数字2>和<数字3>都是可选的,即可以:for(;;);。

  while 其格式为while(<数字>)<语句>,其中的<数字>和<语句>都同上,意思很明显,当<数字>非零时,执行<语句>,否则执行while后面的语句,这里的<语句>被称作循环体。

  do while 其格式为do<语句>while(<数字>);。注意,在while后接了“;”以表示这个单句的结束。其中的<数字>和<语句>都同上,意思很明显,当<数字>非零时,执行<语句>,否则执行while后面的语句,这里的<语句>被称作循环体。

  为什么C++要提供上面的三种循环语句?简写是一重要目的,但更重要的是可以提供一定的优化。for被设计成用于固定次数的循环,而while和do while都是用于条件决定的循环。对于前者,编译器就可以将前面提过的用于记数的变量映射成寄存器以优化速度,而后者就要视编译器的智能程度来决定是否能生成优化代码了。

  while和do while的主要区别就是前者的循环体不一定会被执行,而后者的循环体一定至少会被执行一次。而出于简写的目的,C++又提出了continue和break语句。如下:

for( long i = 0; i < 10; i++ )
{
if( !( i % 3 ) )
continue;
if( !( i % 7 ) )
break;
// 其他语句
}

  上面当i的值能被3整除时,就不执行后面的“其他语句”,而是直接计算i++,再计算i < 10以决定是否继续循环。即continue就是终止当前这次循环的执行,开始下一次的循环。上面当i的值能被7整除时,就不执行后面的“其他语句”,而是跳出循环体,执行for后的语句。即break就是终止循环的运行,立即跳出循环体。如下:

while( --i ) do
{ {
if( i == 10 ) if( i == 10 )
continue; continue;
if( i > 20 ) if( i > 20 )
break; break;
// 其他语句 // 其他语句
} }while( --i );
a = i; a = i;

  上面的continue;执行时都将立即计算—i以判断是否继续循环,而break;执行时都将立即退出循环体进而执行后继的a = i;。

  还应注意嵌套问题,即前面说过的else在寻找配对的if时,总是找最近的一个if,这里依旧。

long a = 0;
P1:
for( long i = a; i < 10; i++ )
for( long j = 0; j < 10; j++ )
{
if( !( j % 3 ) )
continue;
if( !( j % 7 ) )
break;
if( i * j )
{
a = i * j;
goto P1;
}
// 其他语句
}

  上面的continue;执行后,将立即计算j++,而break;执行后,将退出第二个循环(即j的循环),进而执行i++,然后继续由i < 10来决定是否继续循环。当goto P1;执行时,程序跳到上面的P1处,即执行long i = a;,进而重新开始i的循环。

  上面那样书写goto语句是不被推荐的,因为其破坏了循环,不符合人的思维习惯。在此只是要说明,for或while、do while等都不是循环,只是它们各自的用处最后表现出来好象是循环,实际只是程序执行位置的变化。应清楚语句的实现,这样才能清楚地了解各种语句的实际作用,进而明确他人写的代码的意思。而对于自己书写代码,了解语句的实现,将有助于进行一定的优化。但当你写出即精简又执行效率高的程序时,保持其良好的可读性是一个程序员的素养,应尽量培养自己书写可读性高的代码的习惯。

  上面的long j = 0在第一个循环的循环体内,被多次执行岂不是要多次定义?这属于变量的作用域的问题,下篇将说明。

  本篇的内容应该是很简单的,重点只是应该理解源代码编译成机器指令后,在执行时也放在内存中,故每条语句都对应着一个地址,而通过跳转语句即可改变程序的运行顺序。下篇将对此提出一系列的概念,并重点说明类型的意义。

上一页  [1] [2] [3] [4] 

 

 
文章录入:静夜思    责任编辑:静夜思 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    原创地带
    24小时热门帖子