当前位置:网站首页 > C++编程 > 正文

c++ 条件变量(c++ 条件变量和读写锁)



变量其实只不过是程序可操作的存储区的名称。

在 C++ 中,有多种变量类型可用于存储不同种类的数据。

C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。

变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。

大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。

基于前一章讲解的基本类型,有以下几种基本的变量类型,将在下一章中进行讲解:

类型描述bool布尔类型,存储值 true 或 false,占用 1 个字节。char整数类型,通常用于存储普通整数,通常占用 4 个字节。float单精度浮点值,用于存储单精度浮点数。单精度是这样的格式,1 位符号,8 位指数,23 位小数,通常占用4个字节。double双精度浮点值,用于存储双精度浮点数。双精度是 1 位符号,11 位指数,52 位小数,通常占用 8 个字节。void表示类型的缺失。wchar_t宽字符类型,用于存储更大范围的字符,通常占用 2 个或 4 个字节。

C++ 也允许定义各种其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等等,这将会在后续的章节中进行讲解。

  1. 整数类型(Integer Types):
    • :用于表示整数,通常占用4个字节。
    • :用于表示短整数,通常占用2个字节。
    • :用于表示长整数,通常占用4个字节。
    • :用于表示更长的整数,通常占用8个字节。
  2. 浮点类型(Floating-Point Types):
    • :用于表示单精度浮点数,通常占用4个字节。
    • :用于表示双精度浮点数,通常占用8个字节。
    • :用于表示更高精度的浮点数,占用字节数可以根据实现而变化。
  3. 字符类型(Character Types):
    • :用于表示字符,通常占用1个字节。
    • :用于表示宽字符,通常占用2或4个字节。
    • :用于表示16位Unicode字符,占用2个字节。
    • :用于表示32位Unicode字符,占用4个字节。
  4. 布尔类型(Boolean Type):
    • :用于表示布尔值,只能取或。
  5. 枚举类型(Enumeration Types):
    • :用于定义一组命名的整数常量。
  6. 指针类型(Pointer Types):
    • :用于表示指向类型为的对象的指针。
  7. 数组类型(Array Types):
    • 或:用于表示具有相同类型的元素组成的数组。
  8. 结构体类型(Structure Types):
    • :用于定义包含多个不同类型成员的结构。
  9. 类类型(Class Types):
    • :用于定义具有属性和方法的自定义类型。
  10. 共用体类型(Union Types):
    • :用于定义一种特殊的数据类型,它可以在相同的内存位置存储不同的数据类型。

在 C++ 中,类型的长度(即占用的字节数)取决于编译器和计算机架构,然而,C++ 标准规定了不同整数类型的最小范围,而不是具体的字节数,这是为了确保代码在不同的系统上都能正确运行。

请注意,以上类型的范围只是 C++ 标准规定的最小要求,实际上,许多系统上这些类型可能占用更多的字节,例如,很多现代计算机上 int 通常占用 4 字节,而 long 可能占用 8 字节。

变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。

在这里插入图片描述

变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:

 

在这里,type 必须是一个有效的 C++ 数据类型,可以是 char、wchar_t、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:

 

int i, j, k; 声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。

变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,如下所示:

 

下面举个例子:

 

不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。

当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。

尝试下面的实例,其中,变量在头部就已经被声明,但它们是在主函数内被定义和初始化的:

 

当上面的代码被编译和执行时,它会产生下列结果:

 

同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。例如:

 

C++ 中的左值(Lvalues)和右值(Rvalues)是重难点

C++ 中有两种类型的表达式:

  • 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
  • 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。

变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

 

但是下面这个就不是一个有效的语句,会生成编译时错误:

 
  • 定义:右值(rvalue)指的是存储在某个内存地址中的数值或临时对象。右值是不能出现在赋值号左边的表达式,它只能出现在赋值号右边。
  • 特点
    • 右值表示的是数据的值,而不是内存地址。
    • 右值通常是临时值或常量,它们不关联到特定的存储位置,因此不能被修改。
 

考虑以下代码段:

 
  • 中:
    • 是一个左值,因为它表示一个可以被引用和修改的内存位置。
    • 是一个右值,因为它是一个常量值,没有独立的内存地址。
  • 中:
    • 是一个左值,但在这里它被用作右值,表示它所存储的值(即 5)。
    • 是一个左值,因为它是一个可以被引用和修改的变量。
  • 中:
    • 是一个右值,因为它是一个常量值。
    • 是一个左值,它可以被赋值为右值 。

1.左值可以出现在赋值号()的左边和右边

2.右值只能出现在赋值号的右边

简单理解就是:

  • 左值(lvalue)是有名字、有地址的,可以被修改的。
  • 右值(rvalue)是具体的值,没有名字,不能被直接修改。
到此这篇c++ 条件变量(c++ 条件变量和读写锁)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 拆包按哪个键(cs拆包按哪个键)2025-01-10 14:54:08
  • polowalk是什么品牌中文怎么讲(polo jeans company是什么牌子)2025-01-10 14:54:08
  • 单播地址,组播地址,广播地址的区别(mac单播地址,组播地址,广播地址的区别)2025-01-10 14:54:08
  • 佳能cp1500(佳能cp1500色带能打多少张)2025-01-10 14:54:08
  • msvcp140文件被占用无法修复(msvcp120.dll怎么修复)2025-01-10 14:54:08
  • dohc怎么读(dod怎么读)2025-01-10 14:54:08
  • git clone 版本(git clone git)2025-01-10 14:54:08
  • plc1200编程软件下载(plc300编程软件下载)2025-01-10 14:54:08
  • mouse2joystick键位设置(mouse2joystick打不开)2025-01-10 14:54:08
  • console口权限设置(如何设置console口密码)2025-01-10 14:54:08
  • 全屏图片