C++从入门到精通:1.1.2基础语法之数据类型

简介: C++从入门到精通:1.1.2基础语法之数据类型

在C++编程中,数据类型是一个核心概念,它决定了如何在内存中存储数据以及可以对这些数据执行哪些操作。理解数据类型是编写高效、可靠C++代码的基础。本文将详细介绍C++中的基本数据类型,并通过代码示例展示如何在实际编程中使用它们。


一、整型


整型(Integer)是C++中最基本的数据类型之一,用于存储整数。C++提供了多种整型,包括短整型(short)、整型(int)、长整型(long)和长长整型(long long)。它们的存储大小和取值范围因编译器和平台而异。

示例:

image.png

在上面的代码中,我们声明了四种整型变量,并给它们赋了值。注意,长整型和长长整型字面量通常需要使用L或LL后缀来标识。


二、浮点型


浮点型(Floating-point)用于存储小数。C++提供了单精度浮点型(float)和双精度浮点型(double)。它们的主要区别在于存储大小和精度。

示例:

image.png

在上面的代码中,我们声明了一个单精度浮点型变量和一个双精度浮点型变量,并给它们赋了值。注意,单精度浮点型字面量通常需要使用f或F后缀来标识。


三、字符型


字符型(Character)用于存储字符。在C++中,字符型用char关键字表示。字符型变量可以存储ASCII码表中的字符。

示例:

image.png

在上面的代码中,我们声明了一个字符型变量,并给它赋了一个字符值。


四、布尔型


布尔型(Boolean)用于存储逻辑值,即真(true)或假(false)。在C++中,布尔型用bool关键字表示。

示例:

image.png

在上面的代码中,我们声明了一个布尔型变量,并给它赋了一个真值。我们使用条件运算符(?:)来输出布尔值的文本表示。


五、宽字符型


宽字符型(Wide Character)用于存储宽字符,主要用于支持国际化字符集。在C++中,宽字符型用wchar_t关键字表示。

示例:

image.png

在上面的代码中,我们声明了一个宽字符型变量,并给它赋了一个中文字符值。注意,宽字符字面量需要使用L前缀来标识。我们还使用了setlocale函数来设置本地化,以便正确显示宽字符。同时,输出宽字符

需要使用wcout而不是cout。


六、枚举类型


枚举类型(Enumeration)是一种用户定义的数据类型,它包含了一组命名的整数值。在C++中,可以使用enum关键字来定义枚举类型。

示例:

image.png

image.png

在上面的代码中,我们定义了一个名为Color的枚举类型,并包含三个命名常量:RED、GREEN和BLUE。然后,我们声明了一个Color类型的变量myColor,并给它赋了RED值。最后,我们使用switch语句根据myColor的值输出相应的信息。


七、指针类型


指针类型(Pointer)用于存储内存地址。在C++中,指针是一个变量,其值为另一个变量的地址。指针类型通过在变量类型后添加星号(*)来定义。

示例:

image.png

在上面的代码中,我们首先声明了一个整型变量x,并给它赋了一个值。然后,我们声明了一个指向整型的指针ptr,并将其初始化为x的地址。接着,我们输出了x的值、x的地址、ptr的值(即x的地址)以及ptr指向的值(即x的值)。


八、自定义类型


除了上述基本数据类型外,C++还允许用户通过结构体(struct)、类(class)、联合体(union)等方式定义自己的数据类型。这些自定义类型可以包含基本数据类型、其他自定义类型以及成员函数等。

示例(使用结构体):

image.png

在上面的代码中,我们定义了一个名为Person的结构体类型,它包含两个成员:name(字符串类型)和age(整型)。然后,我们声明了一个Person类型的变量p1,并给它的成员赋了值。最后,我们输出了p1的成员值。


九、类型别名


C++11引入了类型别名(Type Alias),允许我们为现有类型创建新的名称。这可以通过使用using关键字或typedef关键字来实现。

示例(使用using):


image.png

在上面的代码中,我们使用using关键字定义了一个名为IntArray的类型别名,它表示int数组。然后,我们使用IntArray来声明一个大小为10的整型数组。


总结:


C++提供了丰富的数据类型,包括整型、浮点型、字符型、布尔型、宽字符型、枚举类型、指针类型以及自定义类型等。理解并掌握这些数据类型是编写高效、可靠C++代码的基础。通过本文的介绍和示例代码,相信读者对C++中的数据类型有了更深入的了解。



相关文章
|
18天前
|
程序员 C++
C++模板元编程入门
【7月更文挑战第9天】C++模板元编程是一项强大而复杂的技术,它允许程序员在编译时进行复杂的计算和操作,从而提高了程序的性能和灵活性。然而,模板元编程的复杂性和抽象性也使其难以掌握和应用。通过本文的介绍,希望能够帮助你初步了解C++模板元编程的基本概念和技术要点,为进一步深入学习和应用打下坚实的基础。在实际开发中,合理运用模板元编程技术,可以极大地提升程序的性能和可维护性。
|
9天前
|
Java 编译器 程序员
C++中的语法知识虚继承和虚基类
**C++中的多继承可能导致命名冲突和数据冗余,尤其在菱形继承中。为解决这一问题,C++引入了虚继承(virtual inheritance),确保派生类只保留虚基类的一份实例,消除二义性。虚继承通过`virtual`关键字指定,允许明确访问特定路径上的成员,如`B::m_a`或`C::m_a`。这样,即使基类在继承链中多次出现,也只有一份成员副本,简化了内存布局并避免冲突。虚继承应在需要时提前在继承声明中指定,影响到从虚基类派生的所有后代类。**
36 7
|
24天前
|
编译器 C++ 开发者
C++一分钟之-属性(attributes)与属性语法
【7月更文挑战第3天】C++的属性(attributes)自C++11起允许附加编译器指令,如`[[nodiscard]]`和`[[maybe_unused]]`,影响优化和警告。注意属性放置、兼容性和适度使用,以确保代码清晰和可移植。示例展示了如何使用属性来提示编译器处理返回值和未使用变量,以及利用编译器扩展进行自动清理。属性是提升代码质量的工具,但应谨慎使用。
37 13
|
16天前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
16天前
|
人工智能 分布式计算 Java
【C++入门 一 】学习C++背景、开启C++奇妙之旅
【C++入门 一 】学习C++背景、开启C++奇妙之旅
|
16天前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
16天前
|
小程序 C++
【C++入门 二 】学习使用C++命名空间及其展开
【C++入门 二 】学习使用C++命名空间及其展开
|
29天前
|
编译器 程序员 C++
C++一分钟之-属性(attributed)与属性语法
【6月更文挑战第28天】C++的属性为代码添加元数据,帮助编译器理解意图。C++11引入属性语法`[[attribute]]`,但支持取决于编译器。常见属性如`nodiscard`提示检查返回值,`maybe_unused`防止未使用警告。问题包括兼容性、过度依赖和误用。使用属性时需谨慎,确保团队共识,适时更新以适应C++新特性。通过示例展示了`nodiscard`和`likely/unlikely`的用法,强调正确使用属性能提升代码质量和性能。
38 13
|
1月前
|
编译器 C语言 C++
【C++】学习笔记——C++入门_2
【C++】学习笔记——C++入门_2
24 6
|
1月前
|
安全 编译器 C语言
【C++】学习笔记——C++入门_3
【C++】学习笔记——C++入门_3
29 4