【C/C++】C/C++编程——C++ 关键字和数据类型简介

news2024/11/19 5:27:17

C++ 关键字和数据类型简介

大家好,我是 shopeeai,也可以叫我虾皮,中科大菜鸟研究生。昨天已经成功运行了第一个C++程序,今天来学习一下C++ 关键字和数据类型。C++ 中的关键字是由 C++ 标准预先定义的。它们被保留作为语言的一部分,开发者不能将这些关键字用作变量名、函数名或任何其他标识符的名称。每个关键字都有其独特的语义,这些语义告诉编译器如何理解和处理接下来的代码。下面详细讲解一些常见的 C++ 关键字:

基本数据类型关键字

  • int, char, float, double, bool, void, wchar_t

在这里插入图片描述

基本数据类型关键字用于声明不同类型的变量。例如,int 用于整数,char 用于字符,floatdouble 用于浮点数,bool 用于布尔值,void 表示无类型,通常用于指定不返回任何值的函数的返回类型,wchar_t 用于宽字符。

类型修饰符关键字

  • signed, unsigned, short, long

    在这里插入图片描述

    类型修饰符关键字用于修改基本数据类型。例如,unsigned int 表示无符号整数,long double 表示扩展精度的浮点数。

程序控制结构关键字

  • if, else, switch, case, default, for, do, while, break, continue, goto

在这里插入图片描述

程序控制结构关键字用于控制程序流程。如 ifelse 用于条件判断,forwhile 用于循环,breakcontinue 用于循环控制,switch 用于多路分支。

访问控制关键字

  • public, protected, private

在这里插入图片描述

访问控制关键字用于定义类成员的访问权限。

类和对象相关关键字

  • class, struct, union, this, new, delete, virtual, override, final, const_cast, dynamic_cast, reinterpret_cast, static_cast

在这里插入图片描述

类和对象相关关键字与面向对象编程相关。classstruct 用于定义类,union 定义联合体,this 指向当前对象,newdelete 用于动态内存管理,virtual 用于定义虚函数,overridefinal 用于 C++11 中的函数重写控制,类型转换关键字(如 static_cast)用于类型转换。

异常处理关键字

  • try, catch, throw, noexcept

在这里插入图片描述

异常处理关键字用于异常处理。

函数和作用域相关关键字

  • auto, extern, register, static, mutable, inline, const, volatile

在这里插入图片描述

函数和作用域相关关键字用于声明变量或函数的存储类别或行为。例如,static 声明静态存储周期,inline 用于内联函数,const 表示不可变,volatile 表示易变。

命名空间和预处理器关键字

  • namespace, using

在这里插入图片描述

  • namespace 用于定义命名空间,using 用于引入命名空间中的名称或者创建别名。

其他特殊用途关键字

  • sizeof, typedef, enum, template, typename, explicit, operator, true, false

在这里插入图片描述

sizeof 用于获取数据类型或对象大小,typedef 用于定义类型别名,enum 定义枚举,templatetypename 用于模板编程,explicit 防止隐式转换,operator 用于定义运算符重载。

C++11 及更高版本中新增的关键字

  • nullptr, constexpr, decltype, noexcept, static_assert, thread_local, alignas, alignof, char16_t, char32_t

在这里插入图片描述

nullptr 表示空指针,constexpr 用于编译时常量,decltype 用于推导类型,noexcept 指定不抛出异常,static_assert 用于编译时断言,thread_local 表示线程局部存储,alignasalignof 用于控制对齐,char16_tchar32_t 用于 Unicode 字符。

数据类型

在 C++ 中,数据类型是一个非常基本的概念,它定义了变量可以存储的数据种类,以及对这些数据可以执行的操作和表达式。C++ 提供了多种数据类型,主要可以分为以下几类:

1. 基本数据类型

基本数据类型是构建程序的基础,包括整型、浮点型、字符型和布尔型。

a) 整型(Integer Types)

在这里插入图片描述

整型用于存储整数值。它们分为几种不同的类型,主要基于存储的大小和范围:

  • int: 最常用的整型,大小通常是 16 位或 32 位。
  • short intshort: 通常是 16 位,用于存储较小的整数。
  • long intlong: 至少与 int 一样大,通常是 32 位或 64 位,用于较大的整数。
  • long long intlong long: 通常是 64 位,用于非常大的整数。
  • 无符号版本,如 unsigned intunsigned short,等等,只存储正值和零。
b) 浮点型(Floating-Point Types)

在这里插入图片描述

用于存储小数值,包括:

  • float: 单精度浮点类型。通常是 32 位。
  • double: 双精度浮点类型。通常是 64 位。
  • long double: 扩展精度浮点类型。大小和精度由实现决定。
c) 字符型(Character Types)

在这里插入图片描述

用于存储单个字符,如字母或数字:

  • char: 通常是 8 位,可以表示标准 ASCII 字符集。
  • wchar_t: 宽字符类型,用于存储扩展字符集。
  • char16_tchar32_t (C++11 引入): 用于表示 Unicode 字符。
d) 布尔型(Boolean Type)
  • bool: 用于表示真(true)或假(false)。

2. 派生数据类型

在这里插入图片描述

派生数据类型允许用户创建复杂类型,包括指针、数组、引用和函数类型。

  • 数组:由相同类型的元素构成的集合。
  • 指针:存储内存地址的变量。可以指向任何类型的数据。
  • 引用:另一个变量的别名。与指针相似,但使用和语法上更安全。
  • 函数:返回特定类型的子程序。

3. 用户定义数据类型

在这里插入图片描述

用户可以根据需求定义自己的数据类型。

结构体 struct: 将不同的数据类型组合成一个单元。

联合体 union: 允许在相同的内存位置存储不同类型的数据。

枚举 enum: 定义一组命名的整型常量。

4. Void 类型

  • 特殊的类型,表示没有值。主要用于指定没有返回值的函数。

5. 类型修饰符

在这里插入图片描述

  • const: 声明一个不可修改的变量。
  • volatile: 指示变量的值可能以程序未明确的方式被改变。
  • signedunsigned : 指定整型是否包含负值。

6. C++11 之后的类型

C++11 引入了几个新的类型,如 auto 用于自动类型推断,nullptr 为指针提供了一个标准的空值。

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

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

相关文章

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子管理实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

Golang中make与new有何区别

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📗本文收录于go进阶系列,大家有兴趣的可以看一看 📘相关专栏Rust初阶教程、go语言基础系…

【新课上架】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

01 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性,同时提高性能。本课程基于当前主流版本Oracle 19cOEL7.9解析如何搭建2节点RAC对1节点单机的DATA GU…

滴滴基于 Ray 的 XGBoost 大规模分布式训练实践

背景介绍 作为机器学习模型的核心代表,XGBoost 在滴滴众多策略算法业务场景中发挥着至关重要的作用。因此,保障并持续提升 XGBoost 模型的离线训练及在线推理稳定性一直是机器学习平台的重点工作。同时,面对多样化的业务场景定制需求和数据规…

学习gin框架知识的注意点

这几天重新学习了一遍gin框架:收获颇多 Gin框架的初始化 有些项目中 初始化gin框架写的是: r : gin.New() r.Use(logger.GinLogger(), logger.GinRecovery(true)) 而不是r : gin.Default() 为什么呢? 点击进入Default源码发现其实他也是…

大数据就业方向-(工作)ETL开发

上一篇文章: 大数据 - 大数据入门第一篇 | 关于大数据你了解多少?-CSDN博客 目录 🐶1.ETL概念 🐶2. ETL的用处 🐶3.ETL实现方式 🐶4. ETL体系结构 🐶5. 什么是ETL技术? &…

Linux——搭建FTP服务器

1、FTP简介 FTP(File Transfer Protocol) :是一种处于应用层的用于文件传输的协议。FTP客户端和FTP服务器之间的通信使用TCP/IP协议族。它规定了客户端和服务器之间的通信格式和命令集,包括用户认证、文件传输、文件名和目录信息等,允许用户…

掌握可视化大屏:提升数据分析和决策能力的关键(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Java - OpenSSL与国密OpenSSL

文章目录 一、定义 OpenSSL:OpenSSL是一个开放源代码的SSL/TLS协议实现,也是一个功能丰富的加密库,提供了各种主要的加密算法、常用的密钥和证书封装管理功能以及SSL协议。它被广泛应用于Web服务器、电子邮件服务器、VPN等网络应用中&#x…

dvwa靶场文件上传high

dvwa upload high 第一次尝试(查看是否是前端验证)第二次尝试我的上传思路最后发现是图片码上传修改配置文件尝试蚁🗡连接菜刀连接 第一次尝试(查看是否是前端验证) 因为我是初学者,所以无法从代码审计角度…

第14次修改了可删除可持久保存的前端html备忘录:增加一个翻牌钟,修改背景主题:现代深色

第14次修改了可删除可持久保存的前端html备忘录&#xff1a;增加一个翻牌钟&#xff0c;修改背景主题&#xff1a;现代深色 备忘录代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X…

Scala基础知识

scala 1、scala简介 ​ scala是运行在JVM上的多范式编程语言&#xff0c;同时支持面向对象和面向函数式编程。 2、scala解释器 要启动scala解释器&#xff0c;只需要以下几步&#xff1a; 按住windows键 r输入scala即可 在scala命令提示窗口中执行:quit&#xff0c;即可退…

线扫相机使用教程

一.线扫相机的采集原理 在现有的工业 2D 相机中&#xff0c;主要有两种类型的相机&#xff0c;面阵相机和线扫相机。这两种相机有其 各自的特点。 面阵相机&#xff1a;主要用于采集较小尺寸的产品&#xff0c;特别是长度方向较小的产品。其采集原理是通过 单次或多次曝光&…

nav02 学习03 机器人传感器

机器人传感器 移动机器人配备了大量传感器&#xff0c;使它们能够看到和感知周围的环境。这些传感器获取的信息可用于构建和维护环境地图、在地图上定位机器人以及查看环境中的障碍物。这些任务对于能够安全有效地在动态环境中导航机器人至关重要。 机器人的传感器类似人的感官…

蓝桥杯备战——7.DS18B20温度传感器

1.分析原理图 通过上图我们可以看到DS18B20通过单总线接到了单片机的P14上。 2.查阅DS18B20使用手册 比赛的时候是会提供DS18B20单总线通讯协议的代码&#xff0c;但是没有提供读取温度数据的代码&#xff0c;所以还是需要我们去查看手册&#xff0c;我只把重要部分截下来了 …

使用Spring Boot和Tess4J实现本地与远程图片的文字识别

概要&#xff1a; 在本文中&#xff0c;我们将探讨如何在Spring Boot应用程序里集成Tess4J来实现OCR&#xff08;光学字符识别&#xff09;&#xff0c;以识别出本地和远程图片中的文字。我们将从添加依赖说起&#xff0c;然后创建服务类以实现OCR&#xff0c;最后展示如何处理…

用友移动管理系统 getApp SQL注入漏洞复现

0x01 产品简介 用友移动系统管理是用友公司推出的一款移动办公解决方案,旨在帮助企业实现移动办公、提高管理效率和员工工作灵活性。它提供了一系列功能和工具,方便用户在移动设备上管理和处理企业的系统和业务。 0x02 漏洞概述 用友移动管理系统 getApp 功能点未对用户的…

Hadoop增加新节点环境配置(自用)

完成Hadoop集群增添一个新的节点配置&#xff08;文中命名为&#xff09;Hadoop106&#xff0c;没有进行继续为该节点分配身份职能的步骤 1.在VMware中安装CentOS 7 新建虚拟机 1.⾸先我们创建⼀个新的虚拟机&#xff0c;也可以点⽂件-新建虚拟机。 2.选择⾃定义&#xff0c…

[C++]使用纯opencv部署yolov8旋转框目标检测

【官方框架地址】 https://github.com/ultralytics/ultralytics 【算法介绍】 YOLOv8是一种先进的对象检测算法&#xff0c;它通过单个神经网络实现了快速的物体检测。其中&#xff0c;旋转框检测是YOLOv8的一项重要特性&#xff0c;它可以有效地检测出不同方向和角度的物体。…

掌握可视化大屏:提升数据分析和决策能力的关键(上)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…