C++啃书(五)语句

1.简单语句

  • 表达式语句:表达式 ;
  • 空语句:只含有一个单独的分号
    在这里插入图片描述
  • 复合语句(块)
    在这里插入图片描述
    空块的作用等价于空语句。

2.语句作用域

3.条件语句

(1)if语句
  基本形式:if (condition)
          statement;
       else if (condition1)
          statement1;
       else
          statement2;
  注意作用域,不要丢掉花括号!
  悬垂else:else与离他最近的尚未匹配的if匹配,与缩进格式无关。
(2)switch语句
  基本形式:switch (condition) {
         case a:
          statement1;
          break;  //不要丢掉break
         case b:
          statement2;
          break;
         default :
          statement3;
          break;
         }
  case标签必须是整型常量表达式。一般不要省略case分支最后的break语句。default 类似于else。
C++啃书(五)语句_第1张图片

  • switch内部的变量定义
    如果在某处一个带有初值的变量位于作用域之外,在另一处该变量位于作用域之内,则从前一处跳转到后一处的行为是非法行为。

4.迭代语句

  while和for语句在执行循环体之前检查条件,do while语句先执行循环体,然后再检查条件。
(1)while语句
  基本形式:while (condition)
          statement;
  当不确定要迭代多少次时,或者想在循环结束后访问循环控制变量时,使用while循环比较合适。
(2)传统的for语句
  基本形式:for (init-statemen; condition; expression)
         statement;
  init-statemen可以是声明语句、表达式语句或空语句;如果condition第一次的求值结果就是false,则statement一次也不会执行。
  init-statemen可以定义多个对象,但是init-statemen只能有一条声明语句,所以所有变量的基础类型必须相同。
  init-statemen、condition和expression三部分都可省略。
(3)范围for语句
  范围for语句可以遍历容器或其他序列的所有元素。
  基本形式:for (declaration : expression)
        statement;
  expression表示的必须是一个序列,即能返回迭代器的begin和end成员。如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型
  在范围for语句中,预存了end()的值,所以执行期间不可以在序列中添加(删除)元素。
(4)do while语句
  基本形式:do
         statement
       while (condition); //注意;位置
  condition不能为空,condition使用的变量必须定义在循环体之外。

5.跳转语句

(1)break语句
  break语句负责终止离它最近的while、do while、for或switch语句,并从这些语句之后的第一条语句开始继续执行。
(2)continue语句
  continue语句终止最近的for、while、do while的循环中的当前迭代并立即开始下一次迭代。
  只有当switch语句嵌套在迭代语句内部时,才能在switch里使用continue。

#include 
#include 
#include 
using namespace std;

int main() {
     
	string word1, word2;
	cout << "请输入一些string:" << endl;
	while (cin >> word1) {
     
		if (!isupper(word1[0])) {
     
			continue;
		}
		if (word1 == word2) {
     
			break;

		}
		else {
      
			word2 = word1; 
		}
	}
	if (word1 == word2) {
     
		cout << word1 << endl;
	}
	else {
     
		cout << "没有连续出现的大写字母开头的单词。" << endl;
	}
	
	system("pause");
	return 0;
}

(3)goto语句
  基本形式:goto label;
  goto语句的作用是从goto语句无条件跳转到同一函数内的另一条语句。
  label:带标签语句的标示符。如end: return;语句中,end就是label。
(4)return语句 (见第六章第3节)

6.try语句块和异常处理

(1)throw表达式:抛出异常
  基本形式:throw 类型 语句;
  使用throw表达式表示遇到了无法处理的问题。throw表达式用来引发异常。
(2)try语句块
  基本形式:try {
         program-statements
       } catch (exception-declaration) {
         handler-statements
       } catch (exception-declaration) {
         handler-statements
       } //…

(3)标准异常
  exception头文件定义了最通用的异常类exception;
  stdexcept头文件定义了几种常用的异常类;
C++啃书(五)语句_第2张图片

  new头文件定义了bad_alloc异常类型;
  type_info头文件定义了bad_cast异常类型。
  其中exception、bad_alloc和bad_cast只能以默认初始化的方式初始化,而其他异常类型的行为必须使用string对象或C风格字符串初始化这些类型的对象。
  异常类型只定义了一个what成员函数,error.what()的返回值是一个指向C风格字符串的const char*,提供关于异常的一些文本信息。

你可能感兴趣的:(C++,c++)