这篇简单介绍一下c++语句,主要有简单语句、语句作用域、条件语句、迭代语句以及异常处理机制
在C++中,简单语句是构成程序的基础单元。它们通常执行单一的操作,并以分号(;
)结束。以下是C++中常见的几种简单语句类型:
表达式语句:这是最常见的简单语句类型,它包括表达式后跟一个分号。例如,赋值操作、函数调用、算术运算等。
a = 5; // 赋值语句
a++; // 后缀递增
func(); // 函数调用
#include <iostream>
int main() {
int a = 5; // 赋值语句
a++; // 后缀递增表达式
std::cout << a << std::endl; // 输出表达式
return 0;
}
声明语句:用于声明变量。在C++中,变量在使用前必须声明。声明语句也是简单语句的一种。
int a; // 声明一个整型变量a
double b; // 声明一个双精度浮点变量b
#include <iostream>
int main() {
int a; // 声明一个整型变量a
a = 10; // 赋值
std::cout << a << std::endl;
return 0;
}
返回语句(return
):在函数中使用,用于返回函数的结果并退出函数。
return; // 无返回值的函数中使用
return x + y; // 返回表达式的结果
空语句:只包含一个分号,不执行任何操作。在某些情况下,空语句可以用于占位或表示循环体或条件体为空。
; // 一个空语句
复合语句(或块):虽然不是简单语句,但它由花括号({}
)包围的一系列语句构成,通常用于定义变量的作用域。
{
int a = 5; // a的作用域限于这个复合语句
a++;
}
在C++中,语句作用域指的是程序中变量和函数的可见性与有效性的范围。以下是C++中作用域的几种主要类型:
if
、for
语句块)内声明的变量。#include <iostream>
void myFunction() {
int a = 5; // a的作用域限于myFunction
std::cout << "Inside myFunction, a = " << a << std::endl;
}
int main() {
myFunction();
// std::cout << a; // 这里访问a将引发编译错误,因为a的作用域只在myFunction内
return 0;
}
#include <iostream>
int x = 20; // 全局变量x
void myFunction() {
std::cout << "Inside myFunction, x = " << x << std::endl; // 可以访问全局变量x
}
int main() {
myFunction();
std::cout << "In main, x = " << x << std::endl;
return 0;
}
#include <iostream>
namespace MyNamespace {
int value = 5; // MyNamespace作用域内的变量
}
int main() {
std::cout << "Value in MyNamespace: " << MyNamespace::value << std::endl;
// 访问命名空间内的变量需要使用命名空间名称
return 0;
}
{}
定义的代码块内声明的变量,它们的作用域限制在这个块内。#include <iostream>
int main() {
{
int a = 10; // a的作用域限于这个块
std::cout << "Inside block, a = " << a << std::endl;
}
// std::cout << a; // 这里访问a将引发编译错误,因为a的作用域已结束
return 0;
}
在C++中,条件语句用于基于特定条件执行不同的代码路径。C++提供了几种条件语句,包括if
、else if
、else
和switch
。下面是对这些条件语句的详细介绍:
if
语句用于在满足特定条件时执行一段代码。if (condition) {
// 执行代码
}
int a = 10;
if (a > 5) {
std::cout << "a大于5" << std::endl;
}
else
语句用于在if
条件不满足时执行另一段代码。if (condition) {
// 条件满足时执行
} else {
// 条件不满足时执行
}
int a = 3;
if (a > 5) {
std::cout << "a大于5" << std::endl;
} else {
std::cout << "a小于或等于5" << std::endl;
}
else if
用于在多个条件之间做出选择。if (condition1) {
// 条件1满足时执行
} else if (condition2) {
// 条件2满足时执行
} else {
// 以上条件都不满足时执行
}
int score = 85;
if (score >= 90) {
std::cout << "优秀" << std::endl;
} else if (score >= 60) {
std::cout << "及格" << std::endl;
} else {
std::cout << "不及格" << std::endl;
}
switch
语句根据变量的值选择执行不同的代码分支。switch (expression) {
case value1:
// value1时执行
break;
case value2:
// value2时执行
break;
// 更多cases
default:
// 没有匹配时执行
}
char grade = 'B';
switch (grade) {
case 'A':
std::cout << "优秀" << std::endl;
break;
case 'B':
case 'C':
std::cout << "良好" << std::endl;
break;
case 'D':
std::cout << "及格" << std::endl;
break;
default:
std::cout << "不及格" << std::endl;
}
if (condition1) {
// ...
if (condition2) {
// ...
}
}
?:
,用于简洁的条件表达。int a = 10, b = 5;
int max = (a > b) ? a : b; // 如果a > b,max = a,否则max = b
在C++中,循环语句用于重复执行一段代码多次,直到满足某个特定的条件。C++提供了几种循环语句,包括while
循环、do-while
循环和for
循环。以下是这些循环语句的详细介绍:
用途:当给定的条件为真时,重复执行代码块。
格式:
while (condition) {
// 循环体
}
特点:循环开始前会检查条件。如果初始条件为假,则循环体一次也不执行。
#include <iostream>
int main() {
int i = 0;
while (i < 5) {
std::cout << i << std::endl;
i++;
}
return 0;
}
do {
// 循环体
} while (condition);
#include <iostream>
int main() {
int i = 0;
do {
std::cout << i << std::endl;
i++;
} while (i < 5);
return 0;
}
for (initialization; condition; increment) {
// 循环体
}
#include <iostream>
int main() {
for (int i = 0; i < 5; i++) {
std::cout << i << std::endl;
}
return 0;
}
用途:遍历容器(如数组或向量)中的每个元素。
格式:
for (declaration : container) {
// 循环体
}
特点:简化了对容器的遍历操作。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (int v : vec) {
std::cout << v << std::endl;
}
return 0;
}
在C++中,跳转语句用于改变程序的控制流,使其从一个位置跳转到另一个位置。C++提供了几种跳转语句:break
、continue
、goto
和return
。这些语句在不同的上下文中有不同的用途和影响。以下是对这些跳转语句的详细介绍:
switch
语句或循环(for
、while
、do-while
)。for
循环中使用break
跳出循环。for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 当i等于5时跳出循环
}
std::cout << i << " ";
}
for
循环中使用continue
跳过某些迭代。for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数迭代
}
std::cout << i << " ";
}
goto
可以用于复杂的流程控制,但过度使用可能导致代码难以理解和维护,因此一般不推荐使用。goto label;
std::cout << "This will be skipped";
label:
std::cout << "Jumped to label";
void
类型的函数的执行。int add(int a, int b) {
return a + b; // 返回a和b的和
}
在C++中,异常处理是一种用于处理程序运行时可能发生的错误和异常情况的机制。异常处理的核心包括三个关键部分:try
块、catch
块和throw
语句。这种机制提供了一种将错误检测和处理代码与正常逻辑代码分离的方法,从而使得代码更加清晰、可维护。
try
块用于包含可能抛出异常的代码。如果try
块中的代码抛出了异常,控制流将跳转到匹配的catch
块。try {
// 可能抛出异常的代码
}
catch
块用于捕获和处理特定类型的异常。可以有多个catch
块来处理不同类型的异常。catch (异常类型 参数) {
// 处理异常的代码
}
throw
语句用于抛出一个异常。可以抛出任何类型的数据,但通常是派生自std::exception
的类的对象。throw 异常对象;
std::exception
。这些异常类包括std::runtime_error
、std::out_of_range
等。以下示例展示了如何在C++中使用异常处理:
#include <iostream>
#include <stdexcept> // 包含标准异常类
void testFunction(int a) {
if (a == 0) {
throw std::invalid_argument("a不能为0"); // 抛出异常
}
std::cout << "a的值是 " << a << std::endl;
}
int main() {
try {
testFunction(0); // 这将抛出一个异常
} catch (const std::invalid_argument& e) {
std::cerr << "捕获到异常: " << e.what() << std::endl;
}
return 0;
}
在这个示例中,如果testFunction
接收到的参数为0,它将抛出std::invalid_argument
异常。main
函数中的try
块尝试调用testFunction
,并使用catch
块来捕获和处理可能出现的异常。
这篇主要讲了
简单语句,
语句作用域:变量和函数在程序中的可见性和有效性范围
条件语句:包括if、else if、else和switch语句,
迭代语句:涵盖了while、do-while和for循环,用于执行重复的操作,直到满足某个特定条件。
异常处理:使用try、catch和throw的异常处理机制,这对于编写能够优雅处理错误和异常情况的程序至关重要。
肝完,下一篇讲什么呢?