离线下载
PDF版 ePub版

极客学院团队出品 · 更新于 2018-11-28 11:00:43

变量类型

变量名给我们提供了在程序中我们可以使用的空间信息。每个变量在 C++ 中都有一个特定的类型,它决定变量在内存中的大小和布局;在该内存空间可以存放取值范围;和一组可以应用于该变量的操作。

一个变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开始。大写和小写的字母是不同,因为 C++ 是区分大小写的:

C++ 中有以下基本变量类型,我们在上一节已经介绍过:

类型 描述
bool 存储的值为 true 或者 false
char 通常是 8 位(一位字节)。它是个整数类型。
int 机器中最常用的整数类型。
float 单精度浮点类型的值。
double 双精度浮点类型的值。
void 代表着缺失类型。
wchar_t 一个宽字符类型。

C++ 还允许定义各种其他类型的变量,我们将在后续章节将会介绍的,比如 Enumeration,指针,数组,引用,数据结构和类。

下一节将介绍如何定义,声明和使用各种类型的变量。

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,这条语句指示编译器创建类型为 int,名称为 i,j 和 k 的变量。

变量在声明的同时可以进行初始化(分配一个初始值)。初始化由一个等号后面跟着一个常数表达式如下:

    type variable_name = value;

如下是一些示例:

    extern int d = 3, f = 5;    // declaration of d and f. 
    int d = 3, f = 5;           // definition and initializing d and f. 
    byte z = 22;                // definition and initializes z. 
    char x = 'x';               // the variable x has the value 'x'.

没有初始化的定义:静态类型的变量会隐式地被初始化为 NULL(所有位值为0),而其他的所有变量的初始值是未知的。

C++ 中变量声明

变量声明为编译器提供保证,对于给定的类型和名称的变量是唯一的,从而编译器在进一步进行编译变量时不需要变量的完整细节。变量声明只是在编译时有意义的,因为编译器在进行程序的链接时需要变量声明的信息。

当你使用多个文件,并且你自己定义的变量放在其中一个文件里,变量的声明将对程序的链接很有用。您可以使用 extern 关键字来声明一个放在任何位置的变量。虽然你在你的 C++ 程序中你可以声明一个变量多次,但它在一个文件中,一个函数或一块代码中只能定义一次。

示例

试试下面的例子,一个变量已经在顶部进行了声明,但同时它也在 main 函数中被定义了:

    #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;
    }

左值和右值

C++ 中有两种表达式:

  • 左值:指向内存位置的表达式称为左值表达式。一个左值可能出现在赋值语句的左边或右边。
  • 右值:右值是指一个数据值存储在某个内存地址中。一个右值是一个表达式,它不能被赋值,这意味着一个右值可能出现在赋值语句的右边,而不是左边。

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

    int g = 20;

但如下却不是一个有效的赋值语句,会产生编译期错误:

    10 = 20;
上一篇: 数据类型 下一篇: 变量作用域