C ++变量类型

变量为我们提供了程序可以操作的命名存储. C ++中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局;可以存储在该存储器中的值的范围;以及可以应用于变量的操作集.

变量的名称可以由字母,数字和下划线字符组成.它必须以字母或下划线开头.大写和小写字母是不同的,因为C ++区分大小写并且减去;

C ++中有以下基本类型的变量,如上一章所述 :

Sr.NoType&说明
1

bool

存储值true或false.

2

char

通常是一个八位字节(一个字节) .这是一个整数类型.

3

int

机器最自然的整数大小.

4

浮动

单精度浮点值.

5

double

双精度浮点值.

6

void

表示缺少类型.

7

wchar_t

宽字符类型.

C ++还允许定义各种其他类型的变量,我们将在后续章节中介绍这些变量,如枚举,指针,数组,参考,数据结构,.

以下部分将介绍如何定义,声明和使用各种类型变量的变量.

C ++中的变量定义

变量定义告诉编译器为变量创建的存储位置和数量.变量定义指定数据类型,并包含该类型的一个或多个变量的列表,如下所示 :

 
 type variable_list;

这里, type 必须是有效的C ++数据类型,包括char,w_char,int,float,double,bool或任何用户 - 定义的对象等, variable_list 可以包含一个或多个用逗号分隔的标识符名称.这里显示了一些有效的声明 :

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

int i,j,k; 都声明并定义变量i,j和k;它指示编译器创建名为i,j和k的int类型的变量.

变量可以在其声明中初始化(赋予初始值).初始化程序包含一个等号后跟一个常量表达式,如下所示;

 
 type variable_name = value;

一些例子是 :

 
 extern int d = 3, f = 5;//声明d和f. 
 int d = 3,f = 5;//定义和初始化d和f. 
 byte z = 22;//定义并初始化z. 
 char x ='x';//变量x的值为'x'.

对于没有初始化程序的定义:具有静态存储持续时间的变量用NULL隐式初始化(所有字节的值都为0);所有其他变量的初始值都是未定义的.

C ++中的变量声明

变量声明为编译器保证存在一个变量使用给定的类型和名称,以便编译器继续进行进一步编译,而无需完整的变量详细信息.变量声明仅在编译时有意义,编译器在链接程序时需要实际的变量定义.

当您使用多个文件时,变量声明很有用您可以在链接程序时可用的其中一个文件中定义变量.您将使用 extern 关键字在任何地方声明变量.虽然您可以在C ++程序中多次声明变量,但它只能在文件,函数或代码块中定义一次.

示例

尝试以下示例,其中变量已在顶部声明,但已在主函数内定义 :

#include <iostream>
using namespace std;

// Variable declaration:
extern int a, b;
extern int c;
extern float f;
  
int main () {
   // Variable definition:
   int a, b;
   int c;
   float f;
 
   // actual initialization
   a = 10;
   b = 20;
   c = a + b;
 
   cout << c << endl ;

   f = 70.0/3.0;
   cout << f << endl ;
 
   return 0;
}

编译并执行上述代码时,会产生以下结果 :

 
 30 
 23.3333

同样的概念适用于函数声明,其中你提供的函数名称是它的声明和实际定义可以在其他任何地方给出.例如 :

// function declaration
int func();
int main() {
   // function call
   int i = func();
}

// function definition
int func() {
   return 0;
}

Lvalues和Rvalues

C ++中有两种表达式 :

  • 左值 : 引用内存位置的表达式称为"左值"表达式.左值可以显示为作业的左侧或右侧.

  • rvalue : 术语rvalue是指存储在内存中某个地址的数据值. rvalue是一个不能赋值给它的表达式,这意味着rvalue可能出现在赋值的右边但不是左边.

变量是左值,因此可能出现在赋值的左侧.数字文字是右值,因此可能无法分配,也不能出现在左侧.以下是有效的陈述 :

 
 int g = 20;

但以下不是有效语句,会产生编译时错误 :

 
 10 = 20;