C++ 字面量与常量


2022 年 7 月 21 日, Learn eTutorial
1885

字面量是常量的另一个名称,它们是程序不允许更改的固定值。常量可以是任何基本数据类型,并进一步细分为布尔值、字符、字符串、浮点数和整数。常量与普通变量的处理方式相同,但一旦定义,就不能更改它们的值。

用于表示固定值的字面量。它们可以直接插入到代码中。例如,9、11.5、“b”等。

在上面的示例中,9、11.5 和“b”都是字面量。这是因为这些术语无法分配不同的值。

我们如何定义常量?

在 C/C++ 程序中,可以通过以下两种方式之一定义常量:

  • 使用 #define 预处理器指令
  • 使用 const 关键字
  1. 使用 #define 预处理器指令:此指令为现有变量或任何值声明一个别名。如下所示,我们可以使用它来声明一个常量。
    
    #define identifierName value
    
    
    • identifierName:这是分配给常量的名称。
    • Value:这指的是分配给 identifierName 的任何值。
    How we will define a constant?
  2. 使用 const 关键字:使用 const 关键字定义常量与定义变量相同;唯一的区别是定义前必须加上 const 关键字。
    
    const datatype variable_name = value
    
    
    How we will define a constant?

C++ 编程中使用的不同类型的字面量

1. 整型字面量

十进制、八进制或十六进制常量可以是整型字面量。基数或进制由前缀指定,对于十六进制可以是 0,对于八进制可以是 0,对于十进制则为空。整型字面量的另一个可能后缀是 U 和 L 的组合,分别代表 unsigned 和 long。后缀可以是任何顺序,也可以是大写或小写字母。没有小数部分或指数部分的数字字面量(与数字相关的)称为整数。

C 编程中主要有 3 种类型的整型字面量(链接到 C 教程):

  • 十进制
  • 八进制
  • 十六进制

在 C++ 编程中,八进制总是以 0 开头,十六进制总是以 0x 开头。

整型字面量详细介绍及简单示例。

整型字面量用于表示和存储整型值。整型字面量有两种表示方式,即:

  1. 前缀:前缀指示要读取整型字面量的基数。例如:0 x 20=32

    十六进制的基数由前缀 0x 表示。因此,十六进制的 20 在十进制中是 32。因此,值为 32。

    C++ 编程中主要有 4 种类型的整型字面量:

  2. 后缀:后缀指示要读取整型字面量的类型。这意味着它主要指示类型。

    例如,123496098764321LL 主要表明值 12345678901234 是一个带有 LL 后缀的 long long 整数。

    根据不同的数据种类,它们以不同的方式表示。

    • int:由于整型常量默认被分配为 int 数据类型,因此不需要后缀。
    • unsigned int:字符 u 或 U 通常出现在整型常量的末尾。
    • long int:字符 l 或 L 通常出现在整型常量的末尾。
    • unsigned long int:字符 ul 或 UL 通常出现在整型常量的末尾。
    • long long int:字符 ll 或 LL 通常出现在整型常量的末尾。
    • unsigned long long int:字符 ull 或 ULL 通常出现在整型常量的末尾。

C++ 程序中如何使用整型字面量?

C++ 程序中如何使用整型字面量?


#include<iostream> 
int main()
{
 
    // constant integer literal is used here
    
    const int intVal = 30;
 
    printf("Integer Literal Will Be:%d \n",
            intVal);
    return 0;
}

输出


Integer Literal Will Be : 30

浮点数字面量

浮点数字面量用于表示和存储实数。实数由整数、实数、小数和指数部分组成。可以使用十进制或指数形式来存储浮点数字面量。

为了构造有效的字面量,在表示浮点数十进制时必须考虑两个方面:

  • 为了避免错误,十进制形式必须包含小数点、指数部分或两者都包含。
  • 指数形式必须包含整数部分、小数部分或两者都包含;否则,将发生错误。

有效浮点数字面量和无效浮点数字面量是浮点数字面量表示的一些示例。

有效浮点数字面量示例 无效浮点数字面量示例
10.541
1.123-20L
10.6E-2
126E
1230f
0.e678

C++ 程序中如何使用浮点数字面量?

C++ 程序中如何使用浮点数字面量?


#include <iostream>
using namespace std;
 
int main()
{
    // Real literal
    const float floatVal = 3.14;
 
    cout << "Floating-point literal Will be: "
         << floatVal << "\n";
    return 0;
}

输出


Floating-point literal Will be:3.14

布尔字面量

此字面量仅在 C++ 中提供;C 中没有。布尔数据类型由它们表示。

它们有两个可能的值:

  • true:true 主要用于表示真值。不应将其视为等于 int 1。
  • false:用于表示假值。不应将其视为等于 int 0。

C++ 程序中如何使用布尔字面量?

C++ 程序中如何使用布尔字面量?


#include <iostream>
using namespace std;
 
int main()
{
    const   bool isTrue = true;
    const   bool isFalse = false;
 
    cout << "isTrue then it is? "
        << isTrue << "\n" ;
    cout << "isFalse then it is? "
        << isFalse << "\n" ;
 
    return 0;
}

输出


isTrue then it is? 1
isFalse then it is? 0

字符字面量

本文的主题是用于将单个字符存储在单引号中的字面量。必须使用字符数组来存储多个字符。如果将多个字符存储在单引号中,将发出警告,并且只会显示字面量的最后一个字符。

由此产生的两种表示形式如下:

  • char 类型:这里存储窄字符字面量或普通字符字面量。

    例如:// C++

    char chr = 'R';

  • wchar_t 类型:只有 C++ 支持此字面量;C 不支持。如果字符后跟 L,则必须将字面量存储在 wchar_t 中。

    例如:// C++

    wchar_t chr = L'R';

  • 转义序列:为了执行各种操作,有许多特殊字符。

C++ 程序中如何使用字符字面量?

C++ 程序中如何使用字符字面量?


#include 
 
int main()
{
    // constant char literal
    const char charVal = 'A';
 
    printf("Character Literal Will Be: %c\n",
        charVal);
    return 0;
}


输出


Character Literal Will Be : A

字符串字面量

字符字面量和字符串字面量类似。除了它们可以存储多个字符外,它们主要使用双引号来存储。

例如: 

string stringVal = "Learn eTutorials"
 

C++ 程序中如何使用字符串字面量?


#include 
using namespace std;
 
int main()
{
    const string str
        = "Welcome All\nTo\n Learn\t e \t Tutorials";
    cout << str;
    return 0;
}

}

输出


Welcome All
To
Learn e Tutorials