• C++变量(C++变量定义、变量赋值、命名规则)


    其实在前面的例子中已经多次用到了变量。在程序运行期间其值可以改变的量称为变量。一个变量应该有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念,见图2.6。


    图2.6

    变量名规则

    先介绍标识符的概念。和其他高级语言一样,用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符(identifier)。简单地说,标识符就是一个名字。变量名是标识符的一种,变量的名字必须遵循标识符的命名规则。

    C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。下面列出的是合法的标识符,也是合法的变量名:
    sum, average, total, day, month, Student_name, tan, BASIC, li_ling

    下面是不合法的标识符和变量名:
    M.D.John, $123, #33, 3G64, Ling li, C++, Zhang-ling, U.S.A.

    注意:在C++中,大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。一般地,变量名用小写字母表示,与人们日常习惯一致,以增加可读性。应注意变量名不能与C++的关键字、系统函数名和类名相同。在国外软件开发工作中,常习惯在变量前面加一个字母以表示该变量的类型,如iCount表示这是一个整型变量,cSex表示这是一个字符型变量。

    C++没有规定标识符的长度(字符个数),但各个具体的C编译系统都有自己的规定。有的系统取32个字符,超过的字符不被识别。

    定义变量

    在C++语言中,要求对所有用到的变量作强制定义,也就是必须“先定义,后使用”,如例2.2和例2.3那样。定义变量的一般形式是:
        变量类型  变量名表列;
    变量名表列指的是一个或多个变量名的序列。如:
        float a,b,c,d,e;
    定义a,b,c,d,e为单精度型变量,注意各变量间以逗号分隔,最后是分号。可以在定义变量时指定它的初值。如:
        float a=83.5, b, c=64.5, d=81.2, e;  //对变量a,c,d指定了初值,b和d未指定初值

    C语言要求变量的定义应该放在所有的执行语句之前,而C++则放松了限制,只要求在第一次使用该变量之前进行定义即可。也就是说,它可以出现在语句的中间,如:
        int a;  //定义变量a(在使用a之前定义)
        a=3;  //执行语句,对a赋值
        float b;  //定义变量b(在使用b之前定义)
        b=4.67;  //执行语句,对b赋值
        char c;  //定义变量c(在使用c之前定义)
        c='A';  //执行语句 ,对c赋值

    C++要求对变量作强制定义的目的是:
    1) 凡未被事先定义的,不作为变量名,这就能保证程序中变量名使用得正确。例如,如果在声明部分写了
        int student;
    而在执行语句中错写成statent。如
        statent=30;
    在编译时检查出statent未经定义,作为错误处理。输出“变量statent未经声明”的信息,便于用户发现错误,避免变量名使用时出错。

    2) 每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。如指定a和b为int型,一般的编译系统对其各分配4个字节,并按整数方式存储数据。

    3) 指定每一变量属于一个特定的类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。例如,整型变量a和b,可以进行求余运算:
        a%b
    %是“求余”,得到a/b的余数。如果将a和b指定为实型变量,则不允许进行“求余”运算,在编译时会给出有关的出错信息。

    为变量赋初值

    允许在定义变量时对它赋予一个初值,这称为变量初始化。初值可以是常量,也可以是一个有确定值的表达式。如
        float a, b=5.78*3.5, c=2*sin(2.0);
    表示定义了a,b,c为单精度浮点型变量,对b初始化为5.78*3, 对c初始化为2*sin(2.0),在编译连接后,从标准函数库得到正弦函数sin(2.0)的值,因此变量c有确定的初值。变量a未初始化。

    如果对变量未赋初值,则该变量的初值是一个不可预测的值,即该存储单元中当时的内容是不知道的。例如,若未对a和b赋值,执行输出语句
        cout<<a<<" "<<b<<" "<<c<<endl;
    输出结果可能为
        1.48544e-38 15 1.81858  (各次运行情况可能不同)
    初始化不是在编译阶段完成的(只有在第4章中介绍的静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋予初值的,相当于执行一个赋值语句。例如:
        int a=3;
    相当于以下两个语句 :
        int a;  // 指定a为整型变量
        a=3;  //  赋值语句,将3赋给a
    对多个变量赋予同一初值,必须分别指定,不能写成
        float a=b=c=4.5;
    而应写成
        float a=4.5, b=4.5, c=4.5;

        float a, b, c=4.5;
        a=b=c;

    如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。
  • 相关阅读:
    Oracle根据【日期】组,其他条件根据PIVOT行转列。使每个日期条件关联的其他数据只有一行。
    ORACLE数据库,数据量大,转移数据到备份表语句
    C#解析"a=1&b=2&c=3"字符串,微信支付返回字符串,替换<br>为&
    dataTable的数据,调试的时候点放大镜就看到了啊啊啊!
    Debug和Release 老程序啊 调试之前 区分一下啊
    FastReport.NET
    grpc 实现微服务生态笔记
    金木水火土
    shell 指令分析nginx 日志qps
    idea中使用tomcat 方式启动spring boot项目
  • 原文地址:https://www.cnblogs.com/wvqusrtg/p/4610814.html
Copyright © 2020-2023  润新知