变量

/*
 一、变量概念
     1)变量其实只不过是程序可操作的存储区的名称;
     2)每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上;
     3)变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为大小写敏感的,关键字不能作为变量名称;
     4)变量的常见基本类型:bool(布尔类型),int(整型),long long(长整型),char(字符型),float(单精度类型),double(双精度类型),void(无类型);
     5)变量的其他类型:枚举、指针、数组、引用、数据结构、类等。
 
 二、变量定义
    变量是先定义后使用。
    方式一:type variable_list;
        指定type数据类型,并定义一个或多个变量的列表,多个用,分开。
    例:
        int i,j,k; //一次性定义i,j,k三个变量,都是int类型,表示在内存中已申请了三个整数类型的空间,可以装三个整数,但没有赋初始值,所以目前的值还是随机数(在局部变量情况下)。
        char c,ch;
        float f;
        double d;
 
        i=2;
        j=3;k=4; //对i,j,k进行赋值
        c='A';
        f=3.14f;
        d=3.14;
 
    方式二:type variable_name = value;
        在定义时赋上初始值,=号为赋值操作符号
    例:
        int i2=2,j2=4,k2; //多个也是,号分开,可以赋值,也可以不赋值或者部分赋值,这里i2,j2都已赋初始值,但k2没赋值,是随机值(在局部变量情况下)。
        char c2='A';
 
    注意:在相同作用域范围内,同一变量不能重复定义
        int i2; //报错
 
 三、变量声明
     1)变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译
     2)变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明
     3)可以使用 extern 关键字在任何地方声明一个变量
     4)可以多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次
     例:
        extern int i,j; //声明i,j两个变量,意思在别的地方定义过了,可以声明多次
        extern int i;
 
 四、左值和右值
     C++ 中有两种类型的表达式:左值(lvalue)和右值(rvalue)
     1)左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
     2)右值(rvalue):右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
     注意:变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。
     
     例:
        int a=3; //正确
        int b=4;
        3=2; //错误  数值是右值,只能出现在右边
        a=b; //正确  变量是左值,可以出现在左边也可以是右边
 */

#include <iostream>
using namespace std;

int main() {
    // 变量定义
    // 方式一:type variable_list;
    int i,j,k; //一次性定义i,j,k三个变量,都是int类型,表示在内存中已申请了三个整数类型的空间,可以装三个整数,但没有赋初始值,所以目前的值还是随机数(在局部变量情况下)。
    char c,ch;
    float f;
    double d;

    i=2;
    j=3; //对i,j进行赋值
    c='A';
    ch='a';
    f=3.14f;
    d=3.14;
    
    cout<<i<<endl;
    cout<<"j="<<j<<endl;
    cout<<k<<endl; //k没有赋值,是随机数
    cout<<c<<endl;
    cout<<ch<<endl;
    cout<<f<<endl;
    cout<<d<<endl;
    
    j = 100; //修改变量j的值,变量的值可以随时修改
    cout<<"j="<<j<<endl;
    
    /*
     输出:
     2
     j=3
     151
     A
     a
     3.14
     3.14
     j=100
     */
    
    
    // 方式二:type variable_name = value;
    int i2=2,j2=4,k2; //多个也是,号分开,可以赋值,也可以不赋值或者部分赋值,这里i,j都已赋初始值,但k没赋值,是随机值(在局部变量情况下)。
    char c2='A';
    
//    int i2;// i2重复定义,上面已定义过i2了。
    
    cout<<i2<<endl;
    cout<<j2<<endl;
    cout<<k2<<endl; //没有赋值,是随机数
    cout<<c2<<endl;
    
    /*
     输出:
     2
     4
     1
     A
     */
    
    
    // 左值和右值
    int a=3; //正确
    int b=4;
//    3=2; //错误  数值是右值,只能出现在右边
    a=b; //正确  变量是左值,可以出现在左边也可以是右边
    
    
    return 0;
}