当前位置:实例文章 » 其他实例» [文章]C++基础(2) - 变量和常量

C++基础(2) - 变量和常量

发布人:随缘丶随性丶随心 发布时间:2023-01-28 07:30 阅读次数:7

文章目录

  • 变量
    • 1、什么是变量
    • 2、如何使用变量
    • 3、变量的命名
      • 3.1 标识符
      • 3.2 命名方案
  • 常量
    • 1、C++如何确定常量的类型
    • 2、符号常量
      • 2.1 `const` 限定符
      • 2.2 预处理器方式 —— `#define`

变量

1、什么是变量

程序必须记录3个基本属性:

  1. 信息将存储在哪里;
  2. 要存储什么值;
  3. 存储何种类型的信息;

变量就是内存中的一小块空间(信息存储的地方)。当我们为变量赋值的时候,就是将数据存入到这个空间中(要存储的值)。而数据类型则决定了这个空间会开辟多大(存储的什么类型)。

“变量”就是指这个空间中的数据是可变的,它与“常量”相对。

2、如何使用变量

  • 声明变量:数据类型 变量名;

    int price;
    
  • 初始化变量:变量名 = 数据;

    price = 5;
    
  • 使用变量:

    std::cout << price << endl;	// 输出变量
    price = 10;	// 修改变量的值
    ...
    

总结:

  1. 未声明的变量不能使用;
  2. 未初始化的变量不能直接使用;
  3. 相同作用域中不能有两个同名变量;
  4. 赋值时的数据的类型必须符合声明时的数据类型;

3、变量的命名

3.1 标识符

用于给变量、函数、类等命名。

  • 命名规则:
    • 由字母、数字、下划线(_)组成;
    • 不能以数字开头;
    • 不能使用C++中的关键字;
    • 区分大小写;
    • 以两个下划线打头(__)或以下划线和大写字母打头(_A)的名称,被保留给实现(编译器及其使用的资源)使用。以一个下划线打头(_)的名称被保留给实现,用作全局标识符【全局名称指的是名称被声明的位置】;
    • C++对于名称的长度没有限制,但是所起名称必须有意义,而且有些平台有长度限制;

3.2 命名方案

就变量名而言,有以下选择:

  • Mydata
  • myData
  • mydata
  • my_data
  • intMyData
  • iMyData

只要变量名合法,就可以根据个人判断而使用。但是要注意保持个人命名风格的一致性和精确性!

常量

字面值,如 1024'a'"hello" 等,都是常量!它与变量相对,是不能修改的值。

此外,使用符号常量来代替字面值是更常用的方法!

1、C++如何确定常量的类型

C++将整型常量存储为 int 类型,浮点常量存储为 double 类型。如果想存储为其他类型,则需要通过后缀来显示指定。

后缀是放在数字常量后面的的字母,用于表示类型:

后缀符号表示类型
u/Uunsigned int
l/Llong / long double
ul(采用任一种顺序,大小写均可)unsigned long
ll/LLlong long
ull(采用任一种顺序,大小写均可)unsigned long long
f/Ffloat

2、符号常量

符号常量就是使用符号名称来代替常量表示的内容。这样,如果多个地方的同一个常量需要修改,我们只需要修改对应的符号名称即可。这个符号名称的命名规则跟变量的命名规则相同。

2.1 const 限定符

const int MONTH = 12;

常量(如MONTH)被初始化后,其值就被固定了,编译器将不允许再修改该常量的值。

语句中的 const 叫做限定符,因为它限定了声明的含义。上面的语句试图给一个 int 型只读变量(常量)MONTH赋值。

创建常量的通用格式如下:

const type name = value;	// type为数据类型,name为常量名,value为数据值

注意:应该在声明中就对const进行初始化!如果在声明常量时没有提供值,则该常量的值将是不确定的,且无法修改。

2.2 预处理器方式 —— #define

除了使用 const 进行常量指定,还可以根据 C 语言的设定,使用 #define 来指定符号常量。

#define INT_MAX 32767

其中 #define#include 一样,是预处理器编译指令。在预处理阶段,它会告诉预处理器,查找程序中所有的 INT_MAX,并将其转换为 32767。直到完成所有替换之后,才会被编译。

相关标签:

免责声明

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱290110527@qq.com删除。

Top