c++语句详细介绍

文章目录

  • 前言
  • 简单语句
  • 语句作用域
      • 1. 局部作用域
      • 2. 全局作用域
      • 3. 命名空间作用域
      • 4. 块作用域
  • 条件语句
      • 1. If语句
      • 2. Else语句
      • 3. Else If语句
      • 4. Switch语句
      • 5. 嵌套条件语句
      • 6. 条件运算符
  • 循环语句
      • 1. While循环
      • 2. Do-While循环
      • 3. For循环
      • 4. 范围Based For循环(C++11及以上版本)
  • 跳转语句
      • 1. Break语句
      • 2. Continue语句
      • 3. Goto语句
      • 4. Return语句
  • try语句块和异常处理
      • 1. Try块
      • 2. Catch块
      • 3. Throw语句
      • 4. 标准异常
      • 代码示例
  • 总结


前言

这篇简单介绍一下c++语句,主要有简单语句、语句作用域、条件语句、迭代语句以及异常处理机制


简单语句

在C++中,简单语句是构成程序的基础单元。它们通常执行单一的操作,并以分号(;)结束。以下是C++中常见的几种简单语句类型:

  1. 表达式语句:这是最常见的简单语句类型,它包括表达式后跟一个分号。例如,赋值操作、函数调用、算术运算等。

    a = 5;     // 赋值语句
    a++;       // 后缀递增
    func();    // 函数调用
    
    #include <iostream>int main() {int a = 5;  // 赋值语句a++;        // 后缀递增表达式std::cout << a << std::endl; // 输出表达式return 0;
    }
    
  2. 声明语句:用于声明变量。在C++中,变量在使用前必须声明。声明语句也是简单语句的一种。

    int a;      // 声明一个整型变量a
    double b;   // 声明一个双精度浮点变量b
    
    #include <iostream>int main() {int a;  // 声明一个整型变量aa = 10; // 赋值std::cout << a << std::endl;return 0;
    }
    
  3. 返回语句return):在函数中使用,用于返回函数的结果并退出函数。

    return;        // 无返回值的函数中使用
    return x + y;  // 返回表达式的结果
    
  4. 空语句:只包含一个分号,不执行任何操作。在某些情况下,空语句可以用于占位或表示循环体或条件体为空。

    ;  // 一个空语句
    
  5. 复合语句(或块):虽然不是简单语句,但它由花括号({})包围的一系列语句构成,通常用于定义变量的作用域。

    {int a = 5;   // a的作用域限于这个复合语句a++;
    }
    

语句作用域

在C++中,语句作用域指的是程序中变量和函数的可见性与有效性的范围。以下是C++中作用域的几种主要类型:

1. 局部作用域

  • 局部作用域通常指在函数或代码块(如iffor语句块)内声明的变量。
  • 这些变量只在声明它们的块或函数内部可见和有效。
  • 示例代码:
    #include <iostream>void myFunction() {int a = 5; // a的作用域限于myFunctionstd::cout << "Inside myFunction, a = " << a << std::endl;
    }int main() {myFunction();// std::cout << a; // 这里访问a将引发编译错误,因为a的作用域只在myFunction内return 0;
    }
    

2. 全局作用域

  • 全局变量在所有函数外部定义,它们在整个程序中都是可见和有效的。
  • 示例代码:
    #include <iostream>int x = 20; // 全局变量xvoid myFunction() {std::cout << "Inside myFunction, x = " << x << std::endl; // 可以访问全局变量x
    }int main() {myFunction();std::cout << "In main, x = " << x << std::endl;return 0;
    }
    

3. 命名空间作用域

  • 命名空间提供了一种将全局变量和函数组织在一起的方式,避免名称冲突。
  • 示例代码:
    #include <iostream>namespace MyNamespace {int value = 5; // MyNamespace作用域内的变量
    }int main() {std::cout << "Value in MyNamespace: " << MyNamespace::value << std::endl;// 访问命名空间内的变量需要使用命名空间名称return 0;
    }
    

4. 块作用域

  • 块作用域是指由花括号{}定义的代码块内声明的变量,它们的作用域限制在这个块内。
  • 示例代码:
    #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++提供了几种条件语句,包括ifelse ifelseswitch。下面是对这些条件语句的详细介绍:

1. If语句

  • 基本形式if语句用于在满足特定条件时执行一段代码。
    if (condition) {// 执行代码
    }
    
  • 示例
    int a = 10;
    if (a > 5) {std::cout << "a大于5" << std::endl;
    }
    

2. Else语句

  • 与If结合else语句用于在if条件不满足时执行另一段代码。
    if (condition) {// 条件满足时执行
    } else {// 条件不满足时执行
    }
    
  • 示例
    int a = 3;
    if (a > 5) {std::cout << "a大于5" << std::endl;
    } else {std::cout << "a小于或等于5" << std::endl;
    }
    

3. Else If语句

  • 多重条件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;
    }
    

4. Switch语句

  • 选择控制switch语句根据变量的值选择执行不同的代码分支。
    switch (expression) {case value1:// value1时执行break;case value2:// value2时执行break;// 更多casesdefault:// 没有匹配时执行
    }
    
  • 示例
    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;
    }
    

5. 嵌套条件语句

  • 条件语句可以嵌套使用,以构建复杂的逻辑。
    if (condition1) {// ...if (condition2) {// ...}
    }
    

6. 条件运算符

  • C++还提供了三元条件运算符?:,用于简洁的条件表达。
    int a = 10, b = 5;
    int max = (a > b) ? a : b;  // 如果a > b,max = a,否则max = b
    

循环语句

在C++中,循环语句用于重复执行一段代码多次,直到满足某个特定的条件。C++提供了几种循环语句,包括while循环、do-while循环和for循环。以下是这些循环语句的详细介绍:

1. While循环

  • 用途:当给定的条件为真时,重复执行代码块。

  • 格式

    while (condition) {// 循环体
    }
    
  • 特点:循环开始前会检查条件。如果初始条件为假,则循环体一次也不执行。

    #include <iostream>
    int main() {int i = 0;while (i < 5) {std::cout << i << std::endl;i++;}return 0;
    }
    

2. Do-While循环

  • 用途:至少执行一次代码块,然后在条件为真时重复执行。
  • 格式
    do {// 循环体
    } while (condition);
    
  • 特点:循环体至少执行一次,因为条件检查发生在循环体之后。
    #include <iostream>
    int main() {int i = 0;do {std::cout << i << std::endl;i++;} while (i < 5);return 0;
    }
    

3. For循环

  • 用途:重复执行代码块,通常用于执行已知次数的循环。
  • 格式
    for (initialization; condition; increment) {// 循环体
    }
    
  • 特点:包括初始化表达式、循环条件和迭代表达式。
    #include <iostream>
    int main() {for (int i = 0; i < 5; i++) {std::cout << i << std::endl;}return 0;
    }
    

4. 范围Based For循环(C++11及以上版本)

  • 用途:遍历容器(如数组或向量)中的每个元素。

  • 格式

    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++提供了几种跳转语句:breakcontinuegotoreturn。这些语句在不同的上下文中有不同的用途和影响。以下是对这些跳转语句的详细介绍:

1. Break语句

  • 用途:用于立即终止最接近的封闭的switch语句或循环(forwhiledo-while)。
  • 示例:在for循环中使用break跳出循环。
    for (int i = 0; i < 10; i++) {if (i == 5) {break; // 当i等于5时跳出循环}std::cout << i << " ";
    }
    

2. Continue语句

  • 用途:跳过当前循环的剩余部分,并继续下一次循环的迭代。
  • 示例:在for循环中使用continue跳过某些迭代。
    for (int i = 0; i < 10; i++) {if (i % 2 == 0) {continue; // 跳过偶数迭代}std::cout << i << " ";
    }
    

3. Goto语句

  • 用途:无条件跳转到同一函数内的标记位置。
  • 注意:虽然goto可以用于复杂的流程控制,但过度使用可能导致代码难以理解和维护,因此一般不推荐使用。
  • 示例:跳转到标记的位置。
    goto label;
    std::cout << "This will be skipped";
    label:
    std::cout << "Jumped to label";
    

4. Return语句

  • 用途:从函数中返回一个值(如果函数有返回类型),或者结束一个void类型的函数的执行。
  • 示例:在函数中返回一个值。
    int add(int a, int b) {return a + b; // 返回a和b的和
    }
    

try语句块和异常处理

在C++中,异常处理是一种用于处理程序运行时可能发生的错误和异常情况的机制。异常处理的核心包括三个关键部分:try块、catch块和throw语句。这种机制提供了一种将错误检测和处理代码与正常逻辑代码分离的方法,从而使得代码更加清晰、可维护。

1. Try块

  • 用途try块用于包含可能抛出异常的代码。如果try块中的代码抛出了异常,控制流将跳转到匹配的catch块。
  • 格式
    try {// 可能抛出异常的代码
    }
    

2. Catch块

  • 用途catch块用于捕获和处理特定类型的异常。可以有多个catch块来处理不同类型的异常。
  • 格式
    catch (异常类型 参数) {// 处理异常的代码
    }
    

3. Throw语句

  • 用途throw语句用于抛出一个异常。可以抛出任何类型的数据,但通常是派生自std::exception的类的对象。
  • 格式
    throw 异常对象;
    

4. 标准异常

  • C++标准库提供了一系列标准异常类,它们都派生自std::exception。这些异常类包括std::runtime_errorstd::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的异常处理机制,这对于编写能够优雅处理错误和异常情况的程序至关重要。

肝完,下一篇讲什么呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核--进程管理(七)进程的核心—task_truct

目录 一、引言 二、调度机制介绍 ------>2.1、任务ID ------>2.2、亲缘关系 ------>2.3、任务状态 ------>2.4、任务权限 ------------>2.4.1、capabilities ------>2.5、运行统计 ------------>2.5.1、pidstat ------>2.6、进程调度 -----…

This is probably not a problem with npm.

项目场景&#xff1a; 新创建的vue3项目&#xff0c;根据elementplus官网安装步骤进行按需导入安装&#xff0c;运行项目报错 This is probably not a problem with npm.There is likely additional logging output above. 原因分析&#xff1a; 是elementplus安装版本和自动…

Python随机点名

python随机点名 # 生成 0 ~ 9 之间的随机数 # 导入 random(随机数) 模块 import random print(random.randint(0,9)) 执行以上代码输出结果为: 4 尝试一下 以上实例我们使用了 random 模块的 randint() 函数来生成随机数&#xff0c;你每次执行后都返回不同的数字&a…

什么是Vue.js的响应式系统(reactivity system)?如何实现数据的双向绑定?

Vue.js的响应式系统是指一种能够跟踪数据变化并实时更新相关界面的机制。它是Vue.js框架的核心特性之一。 在Vue.js中&#xff0c;你可以使用数据绑定语法将数据绑定到DOM元素上。当绑定的数据发生变化时&#xff0c;Vue.js会自动监听这些变化并更新相关的DOM元素。 Vue.js实…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑(1)

接前一篇文章&#xff1a;玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 代码下载&#xff08;2&#xff09; 本文主要参考&#xff1a; BQ3588C_代码下载 上一回完成了代码下载&#xff0c;本回开始进行编译构建。 1. 编译构建 &#xff08;1&#xff09;执行prebuilts 在源…

lc338 比特位计数

lc338 比特位计数 问题&#xff1a; 给一个整数n&#xff0c;遍历0-n的每一个值&#xff0c;统计每个值二进制中1的个数&#xff0c;返回长度为n1的数组。 题解&#xff1a; Brian Kernighan’s 算法。这个算法的核心思想是每次去掉二进制中最右边的一个1&#xff0c;直到所有…

JavaScript可选链接

注&#xff1a;本节仍然使用之前的饭店的对象&#xff0c;可以看上几篇文章查看代码 ● 如果我们想要看看饭店周一的开门时间&#xff0c;我们会这么写 console.log(restaurant.openingHours.mon.open);原因是我们在开放时间中并没有定义周一的开放时间&#xff0c;所有会报错…

2024年工作计划与目标怎么写?如何用手机制作工作待办清单

2024年的钟声已经到来&#xff0c;对于上班族来说&#xff0c;制定一份切实可行的工作计划与目标是非常有必要的。但是&#xff0c;很多人不知道2024年工作计划与目标怎么写&#xff1f;其实&#xff0c;关键在于明确目标、细化计划、合理安排时间&#xff0c;以确保每一步都稳…

python协程

背景 很早之前有一篇中断地关于协程的文章&#xff0c;彼时从js的事件循环切入,对比学习python的asyncio,感觉是个很大的知识点&#xff0c;想写的内容很多&#xff0c;遂搁浅。本次&#xff0c;抽空补齐这块的内容。 序 协程是什么? 协程是个非常好的概念&#xff0c;它在用…

BIO和NIO编程(待完善)

目录 IO模型 BIO NIO 常见问题 IO模型 Java共支持3种网络编程IO模式&#xff1a;BIO&#xff0c;NIO&#xff0c;AIO BIO 同步阻塞模型&#xff0c;一个客户端连接对应一个处理线程 代码示例&#xff1a; Server端&#xff1a; public class BioServer {private static …

window下载安装Mongodb数据库

我们先要访问他的官网 https://www.mongodb.com/zh-cn 然后顶部导航栏 选择 (Products/产品) 下的 (Community Edition/社区版) 进入界面后 找到 MongoDB Community Server Download 点击下面的按钮 Select package 然后会弹到这个位置 第一个版本 用系统默认选择的就好 第二…

Redis - 挖矿病毒 db0 库 backup 反复出现解决方案

问题描述 腾讯云的服务器&#xff0c;使用 Docker 部署了 Redis 之后&#xff0c;发现 DB0 中总是出现 4 条 key&#xff0c;分别是 backup01backup02backup03backup04 而自己每次存入 db0 中的数据过一会就会被无缘无故删除掉。 原因分析 挖矿病毒 解决方案 在启动的时候…

MySQL唯一索引失效的注意点

【1.实验环境】 Docker环境下的MySQL MySQL版本: 5.7.37 【2.表结构】 CREATE TABLE t_1 (id int(11) NOT NULL AUTO_INCREMENT,student_id char(120) DEFAULT NULL,course_id char(120) DEFAULT NULL,is_delete int(11) NOT NULL DEFAULT 0,PRIMARY KEY (id),KEY idx_stude…

QuPath学习④ 脚本使用

目录 1&#xff0c;基础学习 脚本打印项目中所有图像 访问当前图像内容 访问图像元数据 访问像素 创建ROI 创建对象&#xff08;使 ROI 可见&#xff09; 多个ROI Working with BufferedImage 使用 ImageJ 命令示例 2 脚本导出数据&#xff08;重点&#xff09; …

React16源码: Hooks源码实现

Hooks 1 &#xff09;概述 Hooks 在 React16.7版本出现的新功能Hooks 改变了整体应用开发的模式&#xff0c;同时开发体验会和以前会变得不一样Hooks 让函数组件具有类组件的能力 在 function component 里面没有this无法保存 state通过 Hooks可以让 function component 代替…

PSoc62™开发板之串口通信

实验目的 1.使用串口和PC机通信&#xff1a;接收和发送信息 2.接收GNSS模块定位信息 实验准备 PSoc62™开发板CH340 USB转TTL模块ATGM332D GNSS模块公母头杜邦线x4 板载资源 板载有多少uart 创建工程例程&#xff0c;在libraries/HAL_Drivers/uart_config.h中查看BSP支持…

跨境电商如何通过API选品文章

跨境电商通过API选品是一个相对复杂的过程&#xff0c;涉及到多个环节和考虑因素。以下是一个简化的概述&#xff0c;介绍了如何通过API进行选品&#xff0c;由于字数限制&#xff0c;这里仅能展示部分内容&#xff0c;如需5000字的文章&#xff0c;可能需要根据这个提纲进一步…

凯越推出复古150踏板欧洲先上?DAE150/150亮相

今天临下班发现凯越在欧洲的官网上更新了一台复古踏板&#xff0c;外观别说还有点精致的意思&#xff0c;一共分为125和150两个配置&#xff0c;都是采用的水冷单缸发动机。 配置和参数等数据简单过一下&#xff0c;这种车型更多的是看外观了&#xff0c;仪表采用的LCD的显示屏…

MySQL之四大引擎、账号管理以及建库认识

目录 一、数据库存储引擎&#xff08;发动机&#xff09; 1.1、认识引擎 1.2、查看存储引擎 1.3、引擎常识 1.4、support字段说明 1.5、四大引擎 二、数据库管理 2.1、元数据库介绍&#xff1a; 2.2、分类&#xff1a; 2.3、增删改查以及使用操作 2.4、权限 三、数…