C++ 语言基础(2)

2016-02-19 17:19 1 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的C++ 语言基础(2)懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

  if语句

  if语句用于测试条件并在条件为真时执行一桌或几条语句。

  说明:if表达式后面不能带分号,否则它本身表示代码中的空语句,使编译器将空语句解释为在条件为真时执行的语句。

  

if (x == 10); // Warning! Extra semicolon!
DoSomething(x);

  这里DoSomething()函数总会执行,因为编译器不把它看成在条件为真时执行的第一条语句。由于这个代码完全合法(但无用),所以编译器无法发出警告。

  假设要在条件为真时执行多行语句,则要将这些语句放在大括号内:

  

if (x  10) {
cout "The number is greater than 10" end1;
DoSomethingWithNumber(x);
}

  条件表达式求值为false时,与if语句相关联的码段忽略,程序继续执行该码段之后的第一条语句。

  说明 :

  C++中包含许多快捷方法,其中一个是用变量名测试true,例如:

  if (fileGood) ReadData();

  这个方法是下列语句的速写方法:

  if (fileGood == true) ReadData();

  本例用了bool变量,也可以用其它数据类型。只要变量包含非零数值,表达式即求值为true,对变量名加上逻辑非(!)操作符可以测试false值:

  

bool fileGood = OpenSomeFile();
if (!fileGood) ReportError();

  学会C++快捷方法有助于写出更精彩的代码。 有时要在条件表达式求值为true时进行某个动作,在条件表达式求值为false时进行另一动作,这时可以用else语句如下:

  

if (x == 20) {DoSomething(x);}
else {DoADifferentThing(x);}

  新术语

  else语句和if语句一起使用,表示if语句失败时(即在条件表达式求值为false时)执行的码段。

  if语句形式之二:

  

if (cond_expr_1) {
true_statements_1;
}
else if (cond_expr_2)
{ true_statements_2; }
else {
false_statements;
}

  如果条件表达式cond_expr为1真(非零),则执行true_statements1码段;如果条件表达式cond_expr为1为假而如果条件表达式cond_expr为2真(非零),则执行true_statements 2码段;如果两个表达式均为假,执行false_statements码段。

  --------------------------------

  使 用 循 环

  循环是所有编程语言共同的要素。循环可用于对数组重复,对某个动作重复进行指定次数,从磁盘中读取文件,等等。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  循环有:for循环、while循环和do while循环。

  这几个循环基本相同,所有循环都有下列共同要素:

   起点

   循环体,通常放在大括号内,包含每次循环要执行的语句

   终点

   确定循环终止的测试条件

   可选使用break和continue语句

  for循环是最常用的循环,取三个参数:起始数,测试条件和增量表达式。

  for循环语句:

  for(initial; cond_expr;adjust)

  { statements;

  }

  for循环重复执行statements码段,直到条件表达式cond_expr不为真。循环状态由initial语句初始化,执行statements码段后,这个状态用adjust语句修改。下面举一个for循环的典型例子进行说明:

  

for (int i=0;i10;i++){
cout "This is iteration" i end1;
}

  while循环与for循环的差别在于它只有一个在每次循环开始时检查的测试条件。只要测试条件为true,循环就继续运行。

  

int x;
while (x 1000) {
x = DoSomeCalculation();
}

  本例中我调用一个函数,假定它最终会返回大于或等于1000的值。只要这个函数的返回值小于1000,while循环就继续运行。变量x包含大于或等于1000的值时,测试条件变成false,程序转入while循环闭括号后面的第一条语句。while循环通常用bool变量进行测试。测试变量状态可以在循环体中进行设置:

  

bool done = false;
while (!done) {
//some code here
done = SomeFunctionReturningABool();
//more code
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  do while循环与while循环基本相同,但有两点差别。

  ,while循环测试发生在循环体开头,而do while循环测试则发生在循环结束时:

bool done = false;
do {
// some code
done =SomeFunctionReturningABool();
// more code
} while (! done);

  使用dowhile循环还是while循环取决于循环本身的作用。语法中do while循环语句:

do {
tatements;
} while (cond_expr);

  只要条件表达式cond_expr为真(非零),do循环重复statements码段。循环状态必须在do语句之前初始化,并在码段中显式修改。条件表达式cond_expr为假时,循环终止。

  goto语句可以将程序转入前面用标号和冒号声明的标号处。

  下列代码演示了这个语句:

  

bool done = false;
startPoint:
// do some stuff
if (!done) goto(startPoint);// loop over, moving on...

  这里不需要大括号,因为goto语句与标号之间的所有代码均会执行。

  goto语句被认为是C++程序中的不良语句。用goto语句能做的任何工作都可以用While和dowhile循环进行。一个好的C++编程人员很少在程序中使用goto语句。如果你从别的语言转入C++,你会发现C++的基本结构使goto语句显得多余。

  循环中有两个关键字必须介绍,那就是控制循环中程序执行的continue和break。continue语句强制程序转入循环底部,跳过continue语句之后的任何语句。例如,某个测试为真时,循环的某个部分可能不需要执行。这时可以用continue语句跳过continue语句之后的任何语句:

  

bool done = false;
while (!done) {
// some codebool error =SomeFunction();
if (error) continue;
// jumps to the top of the loop
// other code that will execute only if no error occurred
}

  break语句用于在循环正常测试条件符合之前终止循环执行。例如,可以在ints数组中搜索某个元素,找到数字后可以终止循环执行,取得该数字所在的索引位置:

  

int index=1
int searchNumber=50;
for (int i=0;inumElements;i++) {
if (myArray[i]==searchNumber) {
index=i;break;}
}
if(index !=1)
cout "Number found at index " index end1;
else
cout "Number not found in array." end1;
continue和break语句在许多情况下有用。和其它要介绍的知识一样,continue和break语句也要在实践中不断熟悉。
switch语句是高级if语句,可以根据表达式的结果执行几个码段之一。表达式可以是变量、函数调用结果或其它有效C++表达式。下面举一个switch语句例子:switch (amountOverSpeedLimit) {
case 0 :
{fine =0;
break;
}
case 10 :
{fine = 20;
break;
}
case 15 :
{fine =20;
break;
}
case 20 :
case 25 :
case 30 :

fine=amountOverSpeedLimit * 10;
break;
}
default :
{fine =GoToCourt();
jailTime=GetSentence();
}
}

  switch语句分为几个部分。首先有一个表达式,本例中是amountOverSpeedLimit变量(够长的变量名!),然后用case语句测试表达式,如果amountOverSpeedLimit等于0(case 0:),则向变量fine赋值0,如果amountOverSpeedLimit等于10,则向变量fine赋值20,等等。在前三个case中都有break语句。break语句用于转出switch块,即找到了符合表达式的情况,switch语句的余下部分可以忽略了。最后有个default语句,如果没有符合表达式的情况,则程序执行default语句。

  c/c++的高级内容: 结构,指针,引用,函数及类等可以参考其他书籍.

来源:https://www.tulaoshi.com/n/20160219/1614948.html

延伸阅读
  // test12.cpp : Defines the entry point for the console application.   //   #include "stdafx.h"   void func(int i)   {   printf("This is for test %i", i);   } !-- frame contents -- !-- /frame contents --   typedef void (*P...
前一阵子写了一篇文章,提到语言进化的职责之一,就是去除语言中的tricks(职责之二是去除非本质复杂性)。 常看我blog的朋友肯定记得我曾写过的boost源码剖析系列。本来这个系列是打算成书的,但随着对C++的熟悉发生了一些转变,对语言级技术的热衷逐渐消退,再回过头来看boost库中的一些组件,发现原本觉得很有写的必要的东西顿时消...
以Linus Torvalds的一番言论为导火索,国内的技术博客们掀起了一场不大不小的“语言大战”。是否真如Linux之父所说的那样,“C++是一种糟糕的(horrible)语言。而且因为有大量不够标准的程序员在使用而使情况更糟,以至于极轻易产生彻头彻尾的垃圾(total and utter crap)。”孟岩的切身经验颇值得玩味: 我早在N年前就发现自己写程序速度慢,...
  用c实现的插入排序法,先输入10个数,然后利用插入排序法进行排序,将结果输出。算法简单,可供初学者学习。 !-- frame contents -- !-- /frame contents --   #include "stdio.h"   #include "conio.h"   main()   {     int a[10],r[11];    &nbs...
问题:        C++中如何初始化类中的表数据?在C语言中,我能像下面这样初始化结构数组:  // strUCt MYSTRUCT {     int x,y,z; };MYSTRUCT table[] = {     { 1,2,3 },     { 4,5,6 },     .....

经验教程

884

收藏

29
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部