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

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

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


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

基本数据类型关键字

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


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


类型修饰符关键字

  • signed, unsigned, short, long

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

程序控制结构关键字

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


程序控制结构关键字用于控制程序流程。如 if 和 else 用于条件判断,for 和 while 用于循环,break 和 continue 用于循环控制,switch 用于多路分支。

访问控制关键字

  • public, protected, private


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

类和对象相关关键字

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


类和对象相关关键字与面向对象编程相关。class 和 struct 用于定义类,union 定义联合体,this 指向当前对象,new 和 delete 用于动态内存管理,virtual 用于定义虚函数,override 和 final 用于 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 定义枚举,template 和 typename 用于模板编程,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 表示线程局部存储,alignas 和 alignof 用于控制对齐,char16_t 和 char32_t 用于 Unicode 字符。

数据类型

在 C++ 中,数据类型是一个非常基本的概念,它定义了变量可以存储的数据种类,以及对这些数

1. 基本数据类型

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

a) 整型(Integer Types)

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


int: 最常用的整型,大小通常是 16 位或 32 位。

short int 或 short: 通常是 16 位,用于存储较小的整数。

long int 或 long: 至少与 int 一样大,通常是 32 位或 64 位,用于较大的整数。

long long int 或 long long: 通常是 64 位,用于非常大的整数。

无符号版本,如 unsigned int、unsigned short,等等,只存储正值和零。

b) 浮点型(Floating-Point Types)

用于存储小数值,包括:

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


c) 字符型(Character Types)


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


char: 通常是 8 位,可以表示标准 ASCII 字符集。

wchar_t: 宽字符类型,用于存储扩展字符集。

char16_t 和 char32_t (C++11 引入): 用于表示 Unicode 字符。

d) 布尔型(Boolean Type)

bool: 用于表示真(true)或假(false)。

2. 派生数据类型


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

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

3. 用户定义数据类型



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

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

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

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


4. Void 类型

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

5. 类型修饰符


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

6. C++11 之后的类型

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

目录
相关文章
|
5月前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。
227 0
|
9月前
|
存储 缓存 C++
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
9月前
|
安全 编译器 程序员
C++ noexcept 关键字的关键作用
`noexcept` 关键字在 C++ 中扮演着重要角色,通过正确使用 `noexcept`,可以提升程序的性能、增强代码的可读性和安全性,并且有助于编译器进行优化。在编写 C++ 代码时,应仔细考虑每个函数是否应该声明为 `noexcept`,以充分利用这一特性带来的优势。通过本文的介绍,希望开发者能够更好地理解和应用 `noexcept` 关键字,从而编写出更加高效、健壮的 C++ 程序。
307 8
|
9月前
|
存储 机器学习/深度学习 编译器
【C++终极篇】C++11:编程新纪元的神秘力量揭秘
【C++终极篇】C++11:编程新纪元的神秘力量揭秘
|
9月前
|
存储 算法 C++
深入浅出 C++ STL:解锁高效编程的秘密武器
C++ 标准模板库(STL)是现代 C++ 的核心部分之一,为开发者提供了丰富的预定义数据结构和算法,极大地提升了编程效率和代码的可读性。理解和掌握 STL 对于 C++ 开发者来说至关重要。以下是对 STL 的详细介绍,涵盖其基础知识、发展历史、核心组件、重要性和学习方法。
|
9月前
|
存储 安全 算法
深入理解C++模板编程:从基础到进阶
在C++编程中,模板是实现泛型编程的关键工具。模板使得代码能够适用于不同的数据类型,极大地提升了代码复用性、灵活性和可维护性。本文将深入探讨模板编程的基础知识,包括函数模板和类模板的定义、使用、以及它们的实例化和匹配规则。
|
9月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
5月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
146 0
|
7月前
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
277 12
|
8月前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
164 16